【发布时间】:2012-10-25 23:27:20
【问题描述】:
在下面的代码 sn-p 中,我试图通过使用preventDefault() 来阻止用户在<textarea> 中输入新行。我不想输入新行,而是希望输入键触发模糊事件。但是,下面的代码在用户更改<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()
【问题讨论】:
-
我试图阻止用户在 textarea 中输入新行 嗯……看起来你需要的是文本输入。
-
这将是一个不错的选择,但在某些情况下,用户需要输入大量文本 - 超过一行。
-
在阻止默认行为时手动触发更改事件
$('textarea').change();或$(this).change();。 -
在这个示例中运行良好jsfiddle.net/arunpjohny/g4ybc 您使用哪个浏览器? Chrome 和 Firefox 都可以正常工作
-
@jake 虽然它在 IE 中不起作用,但它在 IE 中起作用 jsfiddle.net/arunpjohny/g4ybc/1,这里不是触发
blur,而是将事件焦点更改为另一个对象
标签: javascript jquery jquery-events event-bubbling