22

在我点击重置按钮之前,我在选择(下拉列表)中选择“公司”。单击重置后,该事件通常会发生。我再次选择“公司”,但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('');
  });

});

4

6 回答 6

27

这就是我想出的:

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

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

 trigger("chosen:updated");
于 2013-05-21T21:30:05.297 回答
10

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

$(selector).trigger("chosen:updated")
于 2014-09-19T13:06:48.590 回答
8

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

于 2016-07-02T14:30:33.453 回答
0

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

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

但请注意,当您取消选择输入时,大多数浏览器都会发生“更改”事件

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

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

于 2013-02-27T01:42:06.940 回答
0

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

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

或任何父选择器而不是“重”体

于 2013-02-27T01:42:48.967 回答
0

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

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

      });
于 2013-02-27T01:54:07.137 回答