【问题标题】:How to trigger change event for Chosen (jQuery)如何触发选择的更改事件(jQuery)
【发布时间】:2013-02-12 16:55:01
【问题描述】:

在我点击重置按钮之前,我在选择(下拉列表)中选择“公司”。单击重置后,该事件通常会发生。我再次选择“公司”,但下拉列表中的事件change 没有发生。

谁能告诉我如何在单击重置按钮然后单击相同元素后触发下拉列表的更改事件?

我目前的代码:

$("#mainMenu").change(function(e){
    e.preventDefault();
    loadFirstManu(true);
});

重置按钮的代码:

$("#btn_reset").click(function() {
  CKEDITOR.instances.ckeditor.setData('');
  $('.mchosen').each(function() {
     $(this).val('').trigger('liszt:updated');
     $('#submenu').attr('disabled', 'disabled').html('');
     $('#secondsubmenu').attr('disabled', 'disabled').html('');
     $('#s-menu').removeClass('required').html('');
     $('#secondsubmenu').removeClass('validate[required]');
     $('#tabmenu').attr('disabled', 'disabled').html('');
     $('#tab').removeClass('required').html('');
  });

});

【问题讨论】:

    标签: javascript jquery jquery-chosen


    【解决方案1】:

    这是我想出来的:

    $('#my-select').val(5).trigger("liszt:updated")
    

    liszt:updated 不再在选择的新版本中工作,而是在下面使用Alexandru Cojan's 回答建议

     trigger("chosen:updated");
    

    【讨论】:

    • 感谢指正。这是 1.0 的新触发器名称约定,如 the Change Notes 中所述。
    【解决方案2】:

    对于较新版本的选择事件是“chosen:updated”

    $(selector).trigger("chosen:updated")
    

    【讨论】:

      【解决方案3】:

      如果我只需要刷新所选选择中的值 - .trigger('chosen:updated') 就足够了。但是如果我有更改处理程序并希望它被调用 - 我需要做.trigger('chosen:updated').change()

      【讨论】:

      • 这就是我所需要的。我有一个与我选择的 DDL 相关的更改事件,这个 .trigger('chosen:updated').change() 帮助我实现了调用更改功能
      【解决方案4】:

      我不知道这是不是你的情况,但你上面的代码应该可以工作,

      $("#mainMenu").change(function(e){
              e.preventDefault();
              loadFirstManu(true);
          });
      

      但请注意,当您取消聚焦选择输入

      时,大多数浏览器都会发生“更改”事件

      因此,当您单击 reset 时,就在执行重置操作之前,会触发 onchange

      现在尝试在更改选择后单击选择输入外部,看看它是否仍然有效

      【讨论】:

      • 事件发生在我点击重置按钮之前,然后我选择了我在点击重置之前选择的元素,它没有发生任何事件。
      • 因为我不知道你的 html/代码的结构,你可以添加类似 alert("triggered");在您使用的 .change() 函数中,您可以准确了解错误在哪里
      • 点击重置后,点击重置事件之前的相同元素没有发生,我还设置了警报(“Hello”)来检测事件是否发生或最终仍然没有发生。
      • 尝试删除 e.preventDefault 我认为它在选择中没有任何用处
      【解决方案5】:

      也许你应该尝试使用 .on,因为你的 $('#mainMenu') 可能在某个地方发生了变化(不能说没有例子)。尝试这样做:

      $("body").on('change','#mainMenu',function(){ 
        ...
      });
      

      或任何父选择器,而不是“沉重”的主体

      【讨论】:

        【解决方案6】:

        如果我的理解没有错,那么您想在单击重置按钮后触发事件更改。 你可以通过简单地在你的代码中添加一行来做到这一点 //代码

             $("#btn_reset").click(function(){
               // your code here
               $("#mainMenu").trigger('change'); 
               //you can write this as per your requirements ie. at start or end.
        
              });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-16
          • 2013-12-13
          • 2014-02-12
          • 2013-10-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多