1

我正在尝试根据组合框中的更改事件更新隐藏的输入项。我有一堆下拉菜单,如果它们属于某个类(“test1”),我将动态更改为组合框。我想补充一点,我正在使用我在此处找到的一些 jquery 来获得一个“打开”组合框......即接受任何用户输入而不仅仅是选项列表中可用的内容。为此,我使用了此处提供的 javascript:jQuery combobox/autocomplete but editable

但是,只有以下一项工作......

   $(document).ready(function () {
        $(".test1").combobox();
    });

    $(document).ready(function () {
        $(".test1").change(function () {
            alert('test'); //Other logic to update hidden elements.

        }
        );
    });

如果我注释掉这个函数,它会将下拉菜单变成一个组合框,然后警报就会触发。如果我关闭警报功能,组合框调用将起作用,并且下拉列表变为组合框。任何人都可以提出解决方案吗?

更新:

我弄清楚了为什么这不起作用(至少我是这么认为的)。在上面的链接中,已经处理了组合框的更改行为。我的额外更改事件处理程序未注册。我必须将我的代码添加到更改事件本身中(就像这个片段):

    change: function (event, ui) {
                var selset = "CHF Discharge Diagnosis";
                    $(':hidden').filter($('input[selsetname="' + selset + '"]')).val(this.value);
                    alert($(':hidden').filter($('input[selsetname="' + selset + '"]')).val());

                    if (!ui.item) {
                        var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
                            valid = false;
4

2 回答 2

0

如果组合框正在更改 html 结构(例如创建 ul 或 div 元素而不是表单选择和输入),则它可能不会触发该元素的更改事件。但是在这里:底部的http://jquery.sanchezsalvador.com/jquery/page/jquerycomboboxapi.aspxonChange是一个带有方法的片段。基于此尝试以下

$(document).ready(function () {
    var cb = $(".test1").combobox();
    cb.combobox.onChange = function() {
        alert('test'); //Other logic to update hidden elements.
    };
});
于 2012-06-13T21:16:56.637 回答
0

我想我知道为什么这不起作用(至少我是这么认为的)。在定义 UI 小部件的链接 (http://stackoverflow.com/questions/9473268/jquery-combobox-autocomplete-but-editable) 中,已经处理了组合框的更改行为。我的额外更改事件处理程序未注册。我必须将我的代码添加到更改事件本身中(就像这个片段):

change: function (event, ui) {
            var selset = "CHF Discharge Diagnosis";
                $(':hidden').filter($('input[selsetname="' + selset + '"]')).val(this.value);
                alert($(':hidden').filter($('input[selsetname="' + selset + '"]')).val());

                if (!ui.item) {
                    var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
                        valid = false;
于 2012-06-15T17:47:26.510 回答