按下preventDefault()取消更改事件

时间:2012-11-06 03:08:45

标签: javascript jquery javascript-events event-bubbling

在下面的代码段中,我试图阻止用户使用<textarea>将新行输入preventDefault()。我想要输入键来触发模糊事件,而不是输入新行。但是,以下代码在用户更改<textarea>中的文本然后按Enter后绕过更改事件。如何确保在更改文本值时始终触发更改事件?

$('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()

2 个答案:

答案 0 :(得分:3)

看起来事件ordering存在问题。在IE change事件中,事件首先被触发,然后blur事件被触发,但在Firefox和Chrome中则相反。因此,当您在Firefox和Chrome中手动触发blur()事件时,会导致focus事件触发,但在IE中则不会。

答案 1 :(得分:0)

只需手动触发更改事件,就像触发模糊事件一样。