当我用按钮更改文本框的值时,我试图触发文本框上的更改事件,但它不起作用。检查这把小提琴。
如果在文本框中键入内容,然后单击其他地方,则会触发更改。但是,如果单击该按钮,文本框值将被更改,但不会触发更改。为什么?
当我用按钮更改文本框的值时,我试图触发文本框上的更改事件,但它不起作用。检查这把小提琴。
如果在文本框中键入内容,然后单击其他地方,则会触发更改。但是,如果单击该按钮,文本框值将被更改,但不会触发更改。为什么?
当前回答
从redsquare的出色建议来看,这非常有效:
$.fn.changeVal = function (v) {
return this.val(v).trigger("change");
}
$("#my-input").changeVal("Tyrannosaurus Rex");
其他回答
Onchange只在用户输入时触发,然后输入失去焦点。
你可以手动调用onchange事件使用设置后的值:
$("#mytext").val( 777 ).change(); // someObject.onchange(); in standard JS
或者,您可以使用以下命令触发事件:
$("#mytext").val( 777 ).trigger("change");
我知道这是一个旧线程,但对于其他人来说,上面的解决方案可能不如下面的好,而不是检查更改事件,检查输入事件。
$("#myInput").on("input", function() {
// Print entered value in a div box
$("#result").text($(this).val());
});
您可以使用attr和val方法,然后触发更改:
$('.parent-form').find('input').each(function() {
item = $(this);
item.attr('value', '0622-03-22');
item.val('01/01/01').trigger('change');
});
从https://api.jquery.com/change/:
当元素的值发生变化时,change事件被发送到元素。此事件仅限于<input>元素,<textarea>框和<select>元素。对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时,事件将立即触发,但对于其他元素类型,事件将延迟到元素失去焦点。
从redsquare的出色建议来看,这非常有效:
$.fn.changeVal = function (v) {
return this.val(v).trigger("change");
}
$("#my-input").changeVal("Tyrannosaurus Rex");