【问题标题】:why does the jquery change event not trigger though the value of input changed indeedly? [duplicate]为什么尽管输入的值确实发生了变化,但 jquery 更改事件却没有触发? [复制]
【发布时间】:2014-06-26 02:15:36
【问题描述】:

JSFIDDLE

html代码:

<body>
    <input value="123">
    <button>button</button>
</body>

Js代码(使用JQuery 1.2.0):

$(function(){
    $("button").click(function(){
        $("input").val("balabala...");
    });

    $("body").on("change","input",function(){
        alert("change");
        alert($("input").val());
    });
});

问题:
一开始,输入的值为“123”。

当我通过手动编辑更改文本并单击输入字段以外的其他位置时,将触发输入的更改事件。

但是,当我单击按钮时,也会更改输入的值,输入的更改事件将不起作用。

感谢您的帮助。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

JSFiddle

您需要将.change() 附加到click 函数上:

$(function(){
    $("button").click(function(){
        $("input").val("balabala...").change();

    });

    $("body").on("change","input",function(){
        alert("change");
        alert($("input").val());
    });
});

【讨论】:

  • 谢谢,它也有效。 :-)
【解决方案2】:

使用代码以编程方式更改值时不会触发change 事件,您必须自己触发它

$(function(){
    $("button").click(function(){
        $("input").val("balabala...").trigger('change');
    });

    $("body").on("change","input",function(){
        alert("change");
        alert($("input").val());
    });
});

FIDDLE

【讨论】:

  • 哦,只是出于兴趣,使用.trigger('change').change() 有什么区别?
  • @adeneo 可以,谢谢!
  • 在这种情况下真的没有区别,jQuery 只是有一个特殊的 trigger() 方法可以做到这一点,它接受的选项比仅仅使用 .change()
  • 啊,好的,谢谢 :) @adeneo
  • @BeatAlex 这两种方法都有效,但我不知道细节上的区别。
猜你喜欢
  • 2013-09-10
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2020-11-08
  • 2012-06-16
  • 1970-01-01
相关资源
最近更新 更多