0

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

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

2 回答 2

3

看起来这是事件排序的问题。在 IEchange中首先触发事件,然后触发blur事件,但在 Firefox 和 Chrome 中则相反。因此,当您blur()在 Firefox 和 Chrome 中手动触发事件时,它会导致focus事件触发,但在 IE 中不会。

于 2012-11-06T03:20:38.193 回答
0

只需手动触发 change 事件,就像触发 blur 事件一样。

于 2012-11-06T03:20:13.120 回答