在下面的代码段中,我试图防止用户通过使用<textarea>
将新行输入到preventDefault()
中。而不是输入新行,我希望输入键触发模糊事件。但是,下面的代码在用户更改<textarea>
中的文本然后按回车之后,绕过了更改事件。如何确保更改文本值时始终触发change事件?
$('textarea')
.keypress(function (event) {
if (event.which == '13') {//13 = Enter
event.preventDefault();
$(this).blur();
}
})
.change(function() {// THIS DOES NOT FIRE IF USER PRESSES ENTER
alert('change event');
})
.blur(function() {
console.log('blur event');
});//end: blur()
似乎是事件ordering的问题。在IE中先触发change
事件,然后再触发blur
事件,但是在Firefox和Chrome中则相反。因此,当您在Firefox和Chrome中手动触发blur()
事件时,它会触发focus
事件,但在IE中不会。
只需手动触发更改事件,就像触发模糊事件一样。