【发布时间】:2012-03-02 19:30:50
【问题描述】:
我有一个使用 jQuery UI 自动完成的文本输入元素。输入绑定了一个onchange 事件,以根据用户的选择更改一些其他表单值。当用户从自动完成中选择一个选项时,我还想更改其他表单值。
问题在于,如果用户正在查找“beer”,但只键入“bee”,然后单击自动完成中的啤酒选项,则输入的 onchange 会触发值为“bee”,然后自动完成的选择功能触发(“啤酒”的正确值)。由于这两个处理程序都使用 ajax 调用来查找某些内容,因此我陷入了竞争状态。
我的问题是:在用户单击自动完成选项的情况下,有什么方法可以让onchange 不触发或中止。注意:这仅在单击时发生,仅使用键盘选择选项不会触发输入的onchange。
当自动完成处于活动状态时,我不能完全禁用onchange,因为可以相信用户只会继续输入,然后退出输入而不从自动完成中选择任何内容。
我已经完成了相当多的console.log()'ing,onchange 事件在我能想到的所有其他事件之前触发,包括输入的focusout、自动完成的项目的焦点等。
【问题讨论】:
标签: javascript jquery jquery-ui jquery-events jquery-ui-autocomplete