Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 jQueryUI自动选择组合框事件未触发_Javascript_Jquery_Jquery Ui_Combobox_Jquery Ui Autocomplete - Fatal编程技术网

Javascript jQueryUI自动选择组合框事件未触发

Javascript jQueryUI自动选择组合框事件未触发,javascript,jquery,jquery-ui,combobox,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Combobox,Jquery Ui Autocomplete,我已经实现了jQuery UI自动完成组合框小部件,可以在这里找到: 自动完成正在工作,当从结果值中单击某个项目时,“选择”事件将成功触发。使用键盘滚动并选择项目也将触发“选择”事件 不幸的是,我没有成功触发“更改”、“关闭”和“搜索”等其他事件,这意味着如果有效值为“foo”,用户只需键入“foo”而不单击结果,则不会设置基础值。如果用户选择了“bar”,然后清除搜索文本,则情况也是如此-基础值仍然是“bar” 查看API文档,“change”事件应该附加到“AutoCompleteTecha

我已经实现了jQuery UI自动完成组合框小部件,可以在这里找到:

自动完成正在工作,当从结果值中单击某个项目时,“选择”事件将成功触发。使用键盘滚动并选择项目也将触发“选择”事件

不幸的是,我没有成功触发“更改”、“关闭”和“搜索”等其他事件,这意味着如果有效值为“foo”,用户只需键入“foo”而不单击结果,则不会设置基础值。如果用户选择了“bar”,然后清除搜索文本,则情况也是如此-基础值仍然是“bar”

查看API文档,“change”事件应该附加到“AutoCompleteTechange”事件,但是绑定到该事件也没有效果

$( '#my-select' ).combobox({
    change: function( event, ui ){
        // does not fire
        console.log('change', event, ui, $(this).val());
    },
    close: function( event, ui ){
        // does not fire
        console.log('close', event, ui, $(this).val());
    },
    search: function( event, ui ){
        // does not fire
        console.log('search', event, ui, $(this).val());
    },
    select: function( event, ui ){
        // this will fire when a menu item is clicked
        console.log('select', event, ui, $(this).val());
    }
});

$( '#my-select' ).on( 'autocompletechange', function( event, ui ){
    // does not fire
    console.log('autocompletechange', event, ui, $(this).val());
});
看到它在这个JSFIDLE中不工作了吗:


我注意到,在“change”事件中触发的事件的类型为“comboboxselect”,而原始事件的类型为“autocompleteselect”,但是绑定到“ComboxChange”之类的东西似乎也不起作用。

我在深入研究了“comboboxselect”之后,才发现了这个问题正在显示而不是“自动完成选择”的事件。创建组合框的
jQuery.widget
代码包装自动完成,从而包装事件。仔细检查示例代码后,我可以看到,当触发“autocompleteselect”事件时,它会在父组合框上触发一个“select”事件,并传递原始事件

实现了“AutoCompleteTechange”方法,但它不会在父对象上触发更改事件,只检查输入是否有效,如果无效,则不会清除值。。。似乎是示例中的一个bug

根据问题中链接的示例:

this._on( this.input, {
    // "select" is fired on the combobox
    autocompleteselect: function( event, ui ) {
        ui.item.option.selected = true;
        this._trigger( "select", event, {
            item: ui.item.option
        });
    },

    // change is NOT fired on the combobox
    autocompletechange: "_removeIfInvalid"
});

在查看了出现的“comboboxselect”事件而不是“autocompleteselect”之后,我发现了这个问题。创建组合框的
jQuery.widget
代码包装自动完成,从而包装事件。仔细检查示例代码后,我可以看到,当触发“autocompleteselect”事件时,它会在父组合框上触发一个“select”事件,并传递原始事件

实现了“AutoCompleteTechange”方法,但它不会在父对象上触发更改事件,只检查输入是否有效,如果无效,则不会清除值。。。似乎是示例中的一个bug

根据问题中链接的示例:

this._on( this.input, {
    // "select" is fired on the combobox
    autocompleteselect: function( event, ui ) {
        ui.item.option.selected = true;
        this._trigger( "select", event, {
            item: ui.item.option
        });
    },

    // change is NOT fired on the combobox
    autocompletechange: "_removeIfInvalid"
});