Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击jQuery UI自动完成时禁止输入的更改_Javascript_Jquery_Jquery Ui_Javascript Events_Jquery Ui Autocomplete - Fatal编程技术网

Javascript 单击jQuery UI自动完成时禁止输入的更改

Javascript 单击jQuery UI自动完成时禁止输入的更改,javascript,jquery,jquery-ui,javascript-events,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Javascript Events,Jquery Ui Autocomplete,我有一个使用jQueryUIAutoComplete的文本输入元素。该输入绑定了一个onchange事件,以根据用户的选择更改其他一些表单值。我还想在用户从自动完成中选择选项时更改其他表单值 问题是,如果用户正在查找啤酒,但只键入bee,然后单击autocomplete中的beer选项,则输入的onchange将以bee值触发,然后autocomplete的select函数将以正确的beer值触发。由于这两个处理程序都使用ajax调用来查找某些内容,因此我陷入了竞争状态 我的问题是:在用户单击自

我有一个使用jQueryUIAutoComplete的文本输入元素。该输入绑定了一个onchange事件,以根据用户的选择更改其他一些表单值。我还想在用户从自动完成中选择选项时更改其他表单值

问题是,如果用户正在查找啤酒,但只键入bee,然后单击autocomplete中的beer选项,则输入的onchange将以bee值触发,然后autocomplete的select函数将以正确的beer值触发。由于这两个处理程序都使用ajax调用来查找某些内容,因此我陷入了竞争状态

我的问题是:在用户单击自动完成选项的情况下,是否有某种方法可以使onchange不启动或中止。注意:这仅在单击时发生,仅使用键盘选择选项不会触发输入的onchange

当自动完成处于活动状态时,我不能完全禁用onchange,因为可以相信,用户只会继续键入,然后退出输入,而不会从自动完成中选择任何内容


我已经做了相当多的console.log'ing,onchange事件在我能想到的所有其他事件之前触发,包括输入的focusout、自动完成项的focus等等。

这个问题正是自动完成事件的原因。听起来您应该能够利用此事件根据用户是否选择了项目来执行逻辑,从而删除onchange和autocompleteselect事件处理程序。例如:

$("#auto").autocomplete({
    source: ['hi', 'bye', 'foo', 'bar'],
    change: function (event, ui) {
        if (ui.item) {
            /* user selected an item */           
        } else {
            /* user entered a new item */
        }
    }
});

示例:

Andrew-非常感谢。“这种改变方法的使用正是我所需要的。”安德烈·希特克对此有何想法?