延迟功能调用的触发

时间:2013-09-18 18:25:14

标签: javascript jquery jquery-ui

在我的表单中,我使用的是jquery的自动完成功能。它位于文本框上,但使其看起来像下拉列表。它很棒。

我在此文本框中使用.change调用来执行其他操作。在.change调用/函数中,我调用另一个函数。我的问题是,在我的自动填充字段中的值实际获得我选择的值之前,其他函数调用似乎已触发。

$('#account1').change(function(){
  $('#sub_account1').html('');
  $('#object_code1').html('');
  $('#sub_object_code1').html('');      
  $('#kfs_acct_1').val('');
  change_object_codes(1);
});

例如,在我的文本字段中输入“H”并从显示的自动完成列表中选择“Hello World”。在“Hello World”显示/设置在我的文本框之前,change_object_codes(1)将触发。 change_object_code()中的代码需要处理$('#account1')。val(),但它没有看到它,因为它尚未设置。感叹!

我发现是否发出警报('哟');在我的.change块的第一行,它减慢了它,所以$('#account1).val()在change_object_code触发之前被设置。但是,显然,我不希望那样。

我想知道是否有人有办法阻止change_object_codes()在我的文本框获取我选择的值之前运行。

提前致谢

1 个答案:

答案 0 :(得分:1)

如果你在这里查看jquery的autocomplete api:http://api.jqueryui.com/autocomplete/#event-change你会发现你需要使用它的事件更改处理。

所以,当你调用自动完成时(btw,也应该在你的例子中),它应该是这样的:

$( "#account1" ).autocomplete({
  change: function( event, ui ) {
    change_object_codes(1);
}
});