由于用户熟悉,我希望保留传统的“表单提交时按Enter键”行为。但是通过反射,当他们用文本输入框完成时,他们经常会输入 - 但是在他们实际完成整个表格之前。
我只想在关注某一类输入时才劫持Enter键。
看Related Questions这看起来像我正在寻找的东西:
if (document.addEventListener) {
document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false);
} else {
document.getElementById('strip').onkeypress = HandleKeyPress;
}
但if (document.addEventListener) {
部分对我来说并不熟悉。
答案 0 :(得分:132)
您可以在以下字段中捕获并取消输入keypress
:
$('.noEnterSubmit').keypress(function(e){
if ( e.which == 13 ) return false;
//or...
if ( e.which == 13 ) e.preventDefault();
});
然后在你的输入上给他们一个class="noEnterSubmit"
:)
展望未来,以防其他人稍后发现,在 jQuery 1.4.3 (尚未发布)中,您可以将其缩短为:
$('.noEnterSubmit').bind('keypress', false);
答案 1 :(得分:3)
只需在HTML代码的<Head>
标记中添加以下代码即可。
它将在Enter键上表单提交表格
<script type="text/javascript">
function stopEnterKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
}
document.onkeypress = stopEnterKey;
</script>
答案 2 :(得分:1)
仅允许在特定类(在此示例中为'enterSubmit')中输入:
jQuery(document).ready(function(){
jQuery('input').keypress(function(event){
var enterOkClass = jQuery(this).attr('class');
if (event.which == 13 && enterOkClass != 'enterSubmit') {
event.preventDefault();
return false;
}
});
});
答案 3 :(得分:1)
<input type="text" onkeydown="return (event.keyCode!=13);" />