jquery ui自动完成更改事件

时间:2015-01-19 08:24:37

标签: jquery jquery-ui events cross-browser

我试图让Jquery自动完成只允许选择项目。 我使用change事件来检测:

 change: function (event, ui) {
            if (ui.item) {
                $(this).val('');
            }
        }

它在IE中运行良好。 但是在chrome ui.item中总是为null,即使从列表中选择了该项目。

然后我尝试了另一种方法。 并检查事件类型:

 if (event.originalEvent.type != "autocompletechange") {
            $(this).val('');
        }

它在Chrome中运行良好,但在IE中,事件是“模糊”。

是否有适合两种浏览器的解决方案?

谢谢,Yuval。

1 个答案:

答案 0 :(得分:0)

我有同样的问题,不得不解决它。似乎没有解决这个问题。

jQuery的自动完成仅在event事件上发送uiselect个对象。在change事件中,遗憾的是没有发送任何对象。

这就是我所做的,似乎工作顺利:

$('#autocomplete-input').autocomplete({ 
    source : fields, // fields is an array of objects with field_name and field_id

    change : function() {

        var input = $('#autocomplete-input').val().trim();

        if ( input.length > 0 ) {

            var field_found = false;
            $.each( fields, function( index, value ) {
                if ( input == fields[index]['field_name'] )
                    field_found = fields[index]['field_id'];
            });

            if ( field_found ) {

                $('#field-selected-hidden').val( field_found ); 
            } else {

                $('#field-selected-hidden').val('');
            }

        } else {

            $('#field-selected-hidden').val('');
        }
    }
});

它的基本功能是:如果输入字段更改值,它将搜索预设自动填充字段(源)的数组。如果它的值等于新字段值更改的值,则将隐藏的表单字段设置为字段的id(或您要捕获的任何字段。)

希望它有所帮助...