【问题标题】:jquery change event not firing?jquery更改事件没有触发?
【发布时间】:2012-06-16 21:50:21
【问题描述】:

我正在尝试根据组合框中的更改事件更新隐藏的输入项。我有一堆下拉列表,如果它们属于某个类(“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.

        }
        );
    });

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

更新:

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

    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;

【问题讨论】:

  • 也许尝试将$('.test1').combobox(); 放入更改函数中?
  • 您需要提供更多详细信息,但如果您使用 javascript 更改输入值,onchange 事件将不会触发。
  • 您只需要一个文档准备功能。你所有的功能都在里面。
  • 他们真的需要在不同的 $(document).ready 函数中吗?尝试将它们放在同一个中。然后你可以链接它们:$('.test1').change(function(){...}).combobox();。另外,您能指定您使用的是哪个组合框插件吗?我找到了一些同名的,我想确保我们知道你在使用什么。
  • 我在关于如何使用组合框的问题中添加了一些额外信息。另外,lbstr,我确实尝试将它们放在一个 javascript 函数中。那没有用。

标签: jquery events combobox


【解决方案1】:

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

$(document).ready(function () {
    var cb = $(".test1").combobox();
    cb.combobox.onChange = function() {
        alert('test'); //Other logic to update hidden elements.
    };
});

【讨论】:

    【解决方案2】:

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

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2012-05-19
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多