我正在尝试实现在特定文本框内按下 Enter 键触发一个函数,而不是默认的第一个按钮。你可以在这里看到发生了什么:http://jsfiddle.net/cutsomeat/WZ6TM/1/。
如果你按其他键,你将会得到一个带有该按键编码的警告框,但是如果你按 Enter 键,你将不会得到该按键编码的警告框,相反,你会得到按钮点击事件中的警告框。
显然,按下 Enter 键会触发按钮。是否有一种方法可以避免这种情况,而是在 keyup 事件中捕获 Enter 键,然后触发另一个函数呢?
我正在尝试实现在特定文本框内按下 Enter 键触发一个函数,而不是默认的第一个按钮。你可以在这里看到发生了什么:http://jsfiddle.net/cutsomeat/WZ6TM/1/。
如果你按其他键,你将会得到一个带有该按键编码的警告框,但是如果你按 Enter 键,你将不会得到该按键编码的警告框,相反,你会得到按钮点击事件中的警告框。
显然,按下 Enter 键会触发按钮。是否有一种方法可以避免这种情况,而是在 keyup 事件中捕获 Enter 键,然后触发另一个函数呢?
试试这个:
$('#myText').on("keypress", function(e) {
if (e.keyCode == 13) {
alert("Enter pressed");
return false; // prevent the button click from happening
}
});
使用.on()
代替已被弃用的.live()
方法。
$(document).on("keypress", ".myText", function(e) {
if (e.which == 13) {
//do some stuff
}
});
在 keyDown 中执行 e.preventDefault()
以避免按钮默认操作:
$('#myText').keydown(function(e) {
if (e.keyCode == 13) {
e.preventDefault();
}
alert(e.keyCode);
});
$(document).ready(function() {
$('#myText').keypress(function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$('#myButton').click(); // fire a sample click, you can do anything
}
});
$('#myButton').click(function(e) {
alert('Button click activated!');
});
});
对于动态元素,请像下面这样使用.on()
:
$(document).ready(function() {
$(document).on('keypress', '#myText', function(e) {
if ( e.keyCode == 13 ) { // detect the enter key
$('#myButton').click(); // fire a sample click, you can do anything
}
});
$(document).on('click', '#myButton', function(e) {
alert('Button click activated!');
});
});
.live()
已经被废弃。请改用.on()
代替。 - Arvind Bhardwajbind()
而不是on()
或者更糟的是live()
。 - giamminon()
。bind()
现已弃用。 - Gavin