当用户点击" Enter"时,jQuery不会阻止提交表单。在键盘上

时间:2014-03-19 12:03:19

标签: javascript jquery html ajax

我不想让我的表单定期提交。我希望它是ajax。

我编写了一个代码,用于在用户点击按钮或按下"输入"并通过ajax提交表单时阻止表单提交。

它适用于按钮,但当用户点击键盘上的Enter时,表单会提交并重定向。

这是我写的:

<script type='text/javascript'>
$(document).ready(function(){
    $(document).on('keypress', function(event){
if( event.which == 13)
{
                var container = $('#pricetable'),
        loader = $("<div>",{
            "class" : "ajax-loader"
            }),                                           
        container.html(loader).show();
                $("#seenform").ajaxSubmit({
                url : "../controllers/ctr.orders.php",
                success: function( responseText, statusText, xhr )
                 {
                     loader.remove();
                     var data = responseText;
                     container.html( data );
                 }
});
console.log(responseText);
return false;
} // end of event.which if
     });
});
</script>

不是这样,当我使用以下代码时,它不会被重定向,但是我也需要它来发送ajax:

<script type='text/javascript'>
$(document).ready(function(){
    $(document).on('keypress', function(event){
if( event.which == 13)
{

console.log(responseText);
return false;
} // end of event.which if
     });
});
</script>

两个代码块的ajax部分不同。在第二个代码块中,我仍然没有添加ajax发送部分。

2 个答案:

答案 0 :(得分:2)

你需要调用event.preventDefault();来中止通过回车调用的按钮点击。

$(document).on('keypress', function(event){
    if( event.which == 13) {
      ...
      event.preventDefault();
    }
});

答案 1 :(得分:0)

虽然不是通过发送ajax请求直接解决了这个问题。

我用这种方式解决了它并且它起作用了:

当用户在键盘上点燃Enter时,我会阻止检查它是什么类型的事件。如果它是13,那么我trigger()按钮的click event ,然后返回false。

@ alpham8返回false在这里做了一些事情,因为它不会让javascript自然流动。