0

input当类中的值发生变化时,我必须检测到inpt变化。我的解决方案:

我有这个输入:

<input type="text" class="inpt" />

我有这张支票:

$('input.inpt').on("input change", function() {
    doStuff();
})

当我在输入中输入内容时,doStuff()立即执行。当我需要在 javascript 中更改输入的值时,我会:

    $('input.inpt').val(value);
    $('input.inpt').change();

这是一个好方法吗(因为使用这样的更改功能似乎有点脏)?它适用于所有浏览器吗?谢谢。

4

3 回答 3

4

调用.change()只是 的快捷方式.trigger('change'),即您正在触发更改事件。这似乎是一件完全可以接受的事情。

于 2013-07-06T20:26:32.780 回答
1

正如另一个答案所述,为程序化更改调用更改看起来不应该是任何形式的黑客攻击,实际上可能是最好也是唯一的方法。

var oInpt = $('input.inpt')
oInpt.on("change", function(oEvent) { }); 

function changeValue(sStr)
{
    oInpt.val(sStr);
    oInpt.trigger("change"); 
}
于 2013-07-06T20:23:43.867 回答
0

我认为这样做并没有错,但我更喜欢编写一个函数来处理这两个依赖任务,例如:

function setInputValue(inputElement, value)
{
    $(inputElement).val(value);
    doStuff();
}
于 2013-07-06T20:28:22.580 回答