当input
中inpt
类的值发生变化时,我必须检测到更改。我的解决方案:
我有这个输入:
<input type="text" class="inpt" />
我有这张支票:
$('input.inpt').on("input change", function() {
doStuff();
})
当我在输入中输入内容时,doStuff()
会立即执行。当我需要在javascript中更改输入值时,我会这样做:
$('input.inpt').val(value);
$('input.inpt').change();
这是一个很好的方法(因为使用这样的改变功能似乎有点脏)?它适用于所有浏览器吗?感谢。
答案 0 :(得分:4)
调用.change()
只是.trigger('change')
的快捷方式,即您正在触发更改事件。这似乎是一件完全可以接受的事情。
答案 1 :(得分:1)
如另一个答案所述,对程序化更改进行调整似乎不应该是任何形式的黑客攻击,事实上可能是最好的也是唯一的方法。
var oInpt = $('input.inpt')
oInpt.on("change", function(oEvent) { });
function changeValue(sStr)
{
oInpt.val(sStr);
oInpt.trigger("change");
}
答案 2 :(得分:0)
我认为这样做并没有错,但我更喜欢编写一个函数来处理这两个相关的任务,如:
function setInputValue(inputElement, value)
{
$(inputElement).val(value);
doStuff();
}