仅在_some字段上通过Enter键禁用表单提交

时间:2010-05-08 12:21:22

标签: jquery webforms

由于用户熟悉,我希望保留传统的“表单提交时按Enter键”行为。但是通过反射,当他们用文本输入框完成时,他们经常会输入 - 但是在他们实际完成整个表格之前。

我只想在关注某一类输入时才劫持Enter键。

Related Questions这看起来像我正在寻找的东西:

if (document.addEventListener) {
    document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false);
} else {
    document.getElementById('strip').onkeypress = HandleKeyPress;
}

if (document.addEventListener) {部分对我来说并不熟悉。

4 个答案:

答案 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);" />