2015-06-18 85 views
1

考虑下面的非常简单的小提琴:http://jsfiddle.net/ofy3bhuf/如何防止特定字段使用jQuery提交表单?

我想阻止的形式从按下ENTER键在#no_return输入被提交,但如果按下任何其他输入回波它应作为正常的。

正如你在小提琴中看到的那样,我对表单提交事件和#no_return的关键事件采取了行动。提交事件总是首先发生,但即使不提供,我是否能够阻止来自输入密钥事件的提交事件?

代码:

<form action='scratch_clean' method='get'> 
    <input id='return' /> 
    <input id="no_return" /> 
    <input type='submit' /> 
</form> 
<div id='result'></div> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#no_return').on('keyup', function(e) { 
     e.preventDefault(); 
     var code = e.which; 
     if(code==13) 
     { 
     $('#result').append('keyup<br>'); 
     return false; 
     } 
     //return false; // not needed 

    }); 
    $('form').on('submit', function(e) { 
    e.preventDefault(); 
    $('#result').append('submit<br>'); 
    // EDIT: Other processing happens here 
    return false; 
    }); 
}); 
</script> 

回答

1

试试这个: -

$(document).ready(function() { 
$('form').on('submit', function(e) { 
    e.preventDefault(); 
    $('#result').append('submit<br>'); 
    return false; 
    }); 
}); 

$('#no_return').on('keypress', function(e) { 
    if(e.keyCode == 13) { 
    e.preventDefault(); 
    return false; 
    } 
}); 

Demo

+0

差不多,但它击中了两次,所以我删除KEYUP和它的好。谢谢! –

+0

@BenHolness回答更新谢谢:) –