jquery-ui自动完成组合框更改跟踪

时间:2012-08-13 09:42:02

标签: jquery jquery-ui triggers

这里的问题是我想触发对jquery-ui的自动完成组合框的更改。顺便说一句,这是组合框Jquery UI Combobox

这是我尝试的一个小提琴:Js fiddle

提前谢谢大家。

4 个答案:

答案 0 :(得分:1)

我添加

focus:function(event, ui){
    alert(ui.item.value);
},

在您的代码中,以下是示例http://jsfiddle.net/sechou/SuNMV/4/

焦点:在焦点移动到项目(未选择)之前,ui.item指的是焦点项目。焦点的默认操作是将文本字段的值替换为焦点项的值,但前提是焦点事件由键盘交互触发。取消此事件可防止更新值,但不会阻止菜单项被聚焦。

答案 1 :(得分:1)

检查此代码
特别是if条件的一部分 见DEMO

             this.selected = valid = true;
                            return false;
                        }
                    });
                    if (!valid) {
                        // remove invalid value, as it didn't match anything
                        $(this).val("");
                        select.val("");
                        input.data("autocomplete").term = "";
                        return false;
                    }
                }else{
                  alert(ui.item.value);}
            }
        })

答案 2 :(得分:1)

我还需要额外的事件处理才能处理触发更改事件,因为“选中”在按下回车键或失去对输入的关注时不会处理(点击标签或鼠标点击)。

因此,使用最新版本的jQuery自动完成脚本,我创建了以下解决方案: DEMO

  • 输入:如果菜单可见,请选择第一项
  • 焦点丢失:部分匹配触发未找到消息并清除条目(jQuery UI),但完全输入的答案“选择”该值(不区分大小写)

如何使用Change方法:

$("#combobox").combobox({
    selected: function (event, ui) {
        $("#output").text("Selected Event >>> " + $("#combobox").val());
    }
})
.change(function (e) {
    $("#output").text("Change Event >>> " + $("#combobox").val());
});

希望这有助于其他需要其他更改事件功能的人来弥补“选定”留下的空白。

答案 3 :(得分:0)

最简单的方法:

$( "select" ).combobox({ 
  select: function (event, ui) {
    $(this).trigger("change"); 
  }
});