0

在我的表单中,我使用的是 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() 上工作的代码,但它看不到它,因为它尚未设置。叹!

我发现如果我发出警报('yo');在我的 .change 块的第一行,它减慢了它的速度,因此在 change_object_code 触发之前设置了 $('#account1).val() 。但是,很明显,我不想在那里。

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

提前致谢

4

1 回答 1

1

如果您在此处查看 jquery 的自动完成 api:http: //api.jqueryui.com/autocomplete/#event-change您会看到您需要使用它的事件更改处理。

因此,当您调用自动完成功能(顺便说一句,您的示例中也应该包含该功能)时,它应该如下所示:

$( "#account1" ).autocomplete({
  change: function( event, ui ) {
    change_object_codes(1);
}
});
于 2013-09-18T18:38:41.477 回答