如何使用 jQuery 选择的插件重置表单?

Posted

技术标签:

【中文标题】如何使用 jQuery 选择的插件重置表单?【英文标题】:How can I reset a form with jQuery chosen plugin? 【发布时间】:2011-12-15 09:56:24 【问题描述】:

我有一堆select 元素的形式与I am using the Jquery Chosen plugin.如何重置表格?以下方法不起作用:

<input type="reset" />

【问题讨论】:

您应该将接受的答案更改为 Jack O'Neill 的答案。其他解决方案不再起作用。 请将您接受的答案更改为 Jack O'Neill answere。因为最新版本的触发器现在称为 :updated @Jame & Well wisher:我们不会在插件更新时更改此站点上所有已回答的问题。当时的解决方案是正确的。 RobertWaddell 对答案发表了评论,我相信这是要走的路。 【参考方案1】:

在 jQuery 中这样的东西应该可以工作

<input name="Text1" id="something" type="text">

<input type="reset" id="reset_me"/>


$("#reset_me").click(function()  
$("#something").val("");
);

【讨论】:

$j('.chzn-select').each(function () $j(this).val("") );不清除所选中的标签 @PH 如果你能提供你的代码示例供我们帮助 sottenad 刚刚回答了这个问题,请参考他上面的 jsfiddle 链接。现在我的代码看起来像 $j('.chzn-select').each(function () $j(this).val("").trigger("liszt:updated"); );【参考方案2】:

您需要重置字段的值,然后触发输入上的liszt:updated 事件以使其更新,我在这里做了一个工作示例。

http://jsfiddle.net/VSpa3/3/

$(".chzn-select").chosen();
$('a').click(function()
    $(".chzn-select").val('').trigger("liszt:updated");
);​

自选择的 v1.0 发布以来,触发器现在称为“选择:更新”。使用此新版本的任何人都需要使用触发更新

$(".chosen-select").val('').trigger("chosen:updated");

【讨论】:

好答案!对于最新版本的 Chosen,这应该是 "("chosen:updated")" 很好的答案!但是是否可以重新设置并再次显示原始占位符? 还是不行。我正在通过 Ajax 调用(jQuery load() 方法)动态替换我的选择。然后发出一个新的 selected().trigger("chosen:updated");并且不起作用。选择的搜索仍然无法在新的选择上工作。 当将它用于“multiple:true”选择字段时,它似乎也删除了占位符。你知道清除后保留占位符的方法吗? 啊,我想我找到了...$selectField.val([]).trigger('chosen:updated') 似乎可以解决问题【参考方案3】:

自从选择的 v1.0 发布以来,触发器现在称为“选择:更新”。使用此新版本的任何人都需要使用触发更新

$(".chosen-select").val('').trigger("chosen:updated");

【讨论】:

由于更改,这应该是正确的答案。我发现的其他解决方案都不能正常工作。谢谢! 但是不行!如果选择被另一个具有相同 id/name 的选择(jQuery load() 方法)动态替换,则搜索停止在新选择上工作。尝试在新选择上调用 .chosen()、调用 .chosen('destroy')、调用 .trigger("chosen:updated") 以及这些的组合。【参考方案4】:

你可以试试这个:

$('select').chosen('destroy');  

$('select').prop("selectedIndex", -1);   
$('select').chosen();

【讨论】:

【参考方案5】:

有时您必须重置调用选择的选择。

我这样做

jQuery.fn.chosen_reset = function(n)
  $(this).chosen('destroy');
  $(this).prop('selectedIndex', 0);
  $(this).chosen(n)

然后像这样调用这个函数,将选项作为参数

$('select').chosen_reset(width:'369px');

【讨论】:

【参考方案6】:

为了自然地重置工作,请使用:

$("input[type='reset'], button[type='reset']").click(function(e)
    e.preventDefault();

    var form = $(this).closest('form').get(0);
    form.reset();

    $(form).find('select').each(function(i, v) 
        $(v).trigger('chosen:updated');
    );

【讨论】:

使用 form.reset() 然后触发 selected:update 是最好的解决方案,特别是如果您想呈现最初显示的表单。设置 .val('') 不会将表单返回到默认值。 这是有效的。请记住手动重置以动态方式添加到 DOM 的组合框(选择)。【参考方案7】:

对于更轻松的方法...假设您的输入在 &lt;form&gt; 标签内:

<form>
    <!-- your selects go here and any other input fields -->
    <input type="reset" value="Reset"> 
</form>

这就是我要做的:

$("input[type='reset'], button[type='reset']").click(function(e)
      setTimeout(function() $("select").trigger("chosen:updated"); , 50);
);

见fiddle here。

【讨论】:

@MarcoMarsala 如果你看看小提琴,它确实有效。您的代码与小提琴有何不同? 我更新到 1.2.0 并且一切都开始工作没有麻烦。我什至不需要 setTimeout。可能是 1.12 中的一个错误【参考方案8】:

以前的选项都不适合我。我不得不像老派一样做,即使使用一些原生 javascript,这里是代码:

$('#dllSample option').each(function()
     $(this)[0].selected = false;   
);
$("#dllSample").trigger("chosen:updated");

【讨论】:

【参考方案9】:
$("#Your_id").trigger("chosen:updated");

这对我有用

【讨论】:

【参考方案10】:

这里没有一个答案对我有用。 我将选择的选择与多个属性一起使用。 正常的提交表单按钮也没有起到作用。 所以我只是有一个功能在点击时执行此操作。

//Gets the selected values
var selected = [];
    for (var option of document.getElementById('mySelect').options) 
        if (option.selected) 
            selected.push(option.value);
        

    

//Resets the form
document.getElementById('form1').reset();

//Chosen values doesnt get reset, so we do this manually
//Removes the values selected by clicking on the x icon
$link = $('a.search-choice-close');
            var i;
            for (i = 0; i < selected.length; i++) 
                $link[i].click();
            

【讨论】:

以上是关于如何使用 jQuery 选择的插件重置表单?的主要内容,如果未能解决你的问题,请参考以下文章

select2 jquery插件重置具有预选项目的选择元素

提交后重置jquery移动表单输入

如何使用带有 .reset() 方法的 jQuery 重置表单

我们如何使 htmx 响应触发表单重置?

如何使用 JQuery 重置单个输入元素

JQuery中如何重置(reset)表单