以编程方式改变输入字段中的值执行某些任务

时间:2015-05-21 08:01:32

标签: javascript jquery

HTML

<input id="testinput" type="text"></input>  

JS

$('#testinput').change(function (){
    change();
});
function change(){
    alert();
}
$('#testinput').val('new val');  

Link
通过键入输入并失去焦点,它可以正常工作,但如果输入字段的更改由jquery触发,则它不起作用。
$('#testinput')。val('new val')。触发器('更改'); 不是必需的。

2 个答案:

答案 0 :(得分:2)

来自MDN(由我加粗):

  

对input,select和textarea触发change事件   元素当元素的值被更改时   用户即可。与输入事件不同,更改事件不一定   每次更改元素值时触发。

如果要以编程方式更改值,则需要手动触发change事件。

我想如果你不想手动触发更改事件,你可以覆盖jQuery的val$.fn.val)方法为你做这件事:

var originalVal = $.fn.val;
$.fn.val = function() {
    if(arguments.length) {
       originalVal.apply(this, arguments);
       this.trigger('change');
       return this;
    }
    return originalVal.call(this);
}

http://jsfiddle.net/ybj1zjhk/4/

答案 1 :(得分:0)

每次输入内容时

都会触发警报

protected

或者,只要您执行需要让更改事件触发https://jsfiddle.net/owoemcg2/

的事情,您就可以触发更改事件
 $('#testinput').keyup(function (){
        change();
    });
    function change(){
        alert();
    }
    $('#testinput').val('new val');