我不想让我的表单定期提交。我希望它是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发送部分。
答案 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自然流动。