选定的插件更改事件未触发。

30

我正在使用Chosen jQuery插件,并注意到change事件仅仅在页面加载时起作用,而不是每次input字段改变时都会触发。

如何使它在用户每次更改输入字段的值时都能正常工作?

这是我的代码:

 $("#day").chosen().change({
     console.log('working');
  });

我有什么遗漏吗?


此答案包含可工作的解决方案: https://dev59.com/CWgu5IYBdhLWcg3wgXO5 - Jure Sah
6个回答

28

要触发标准的更改事件,可以使用以下方式:

  $('#day').on('change', function(e) {
    // triggers when whole value changed
    console.log("value changed");
  });

为了在每次按键时触发该事件,

  $('#day').on('keyup', function(e) {
    // triggers when each key pressed
    console.log("key pressed");
  });

了解 chosen 的默认事件,请参考此处


23

试试这个:

$(document).ready(function(){
    $("selector").chosen().change(function(){
        var id = $(this).val();
    });
})

这对我起作用,我可以在控制台中输出数值...$(document).ready(function(){ $("selector").chosen().change(function (event) { console.log($(event.target).val()); }); }) - Shinu K Narayanan

7

动态更新 Chosen

如果你需要更新下拉选择框的选项并希望 Chosen 能够获取这些更改,你需要在该字段上触发 "chosen:updated" 事件。Chosen 将根据更新后的内容重新构建自身。

$("#foo").trigger("chosen:updated");

3
这与 OP 的问题无关。 - Eggcellentos

1

选择多项

当选择多项时,$(this).val(); 返回一个 array。 以下代码将返回最后一个被选中或取消选中的 id:

$('#my_chosen_list').chosen().change(function(_, object){
    console.log(!object.selected ? object.selected : object.deselected);
    ...
});

提示:未定义的变量 undefined 值为 undefined,但是 !undefined 的值为 true,因此 !!undefined 的值为 false。

0

然后在输入框的键盘抬起事件中编写:

$('inputselector').keyup(function() {
  $("#day").chosen().change({
   console.log('working');
  });
});​

并在DOM准备就绪时:

$('inputselector').trigger('keyup');

0
    //Asp.net dropdown listbox
  <asp:ListBox ID="CompanySelect" runat="server" AppendDataBoundItems="true" 
  AutoPostBack="true"   
  data-placeholder="Select Companies" class="chosen-select"  SelectionMode="Multiple" 
  EnableViewState="true" Height="39px" Width="99%" >
  <asp:ListItem Value="0">All</asp:ListItem>
  </asp:ListBox>

    //This code help me for hiting chozen change event.

     $('#chosen').val('').change()
        {
           alert("working");
        }

    //if you want to get select value you need to do this.

     $('#chosen').val('').change()
        {
            alert($(".chosen-select").val());
        }

1
尽管这段代码可能有助于解决问题,但它并没有解释为什么以及如何回答这个问题。提供这种额外的上下文将显著提高其长期价值。请编辑您的答案以添加说明,包括适用的限制和假设。 - Toby Speight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接