1

我正在使用 jQuery 的自动完成功能,并按以下方式进行了设置

$('#id').autocomplete({
        source: function (request, response) {
            $.ajax({
                url: 'myurl'
            , type: 'POST'
            , dataType: 'json'
            , data: { 'query': request.term }
            , success: function (data) {
                response($.map(data, function (item) {
                    return { label: item, value: item };
                }));
            }
            });
        },
        delay: 300,
        minLength: 2,
        close: function (event, ui) { doAjaxStuffNow() },
        change: function (event, ui) { doAjaxStuffNow() }
    });

由于我想通过 ajax 调用实现时间,我同时使用了 close 和 change 功能。我希望它在菜单关闭时执行,或者在菜单永远不会打开的情况下,当字段模糊时执行。问题是,如果菜单关闭然后字段模糊,它会触发两次,所以我想知道是否有人知道实现关闭异或变化效果的方法。

谢谢,汤姆

4

1 回答 1

1

您可以使用 focus 和 blur 方法来确定值是否已更改。

$("#combo_input_id").focus(function() {
    oldval = $(this).val();
    }).blur(function(){
        if(oldval != $(this).val()){
            doAjaxStuffNow();
        };
        return false;
    });

它不是很漂亮,但它完成了工作。我希望 jqueryui 的未来版本会触发 change 方法,即使用户从不输入输入。

于 2012-11-01T20:44:11.083 回答