关于form表单在ajax中return false仍然提交的内容

时间:2022-12-02 18:55:17

在实现form表单的时候,我们往往会有一些需求,就是对表单数据进行验证,再决定是否提交表单内容。

而默认的form表单的默认事件,就是提交表单内容,那么应该如何进行判断呢?


通常有两种写法,原理都一样,只是习惯不同,一种就是form的 onsubmit事件,另一种则去掉input  type='submit'这个默认提交按钮,改成一个普通的button来执行提交事件(你会发现如果你改成button或者  input  type=button 它还是会提交数据 )。


另外在提一下,如果使用KindEditor编辑器或其他插件的时候,出现必须使用input type='submit'才能正常显示的情况,此时就不要在提交按钮中添加事件,而是在form的onsubmit事件中处理,为了兼容插件和我们的逻辑


例如:


<form action="index.html" method="post" name="form" id="form">

<button onclick="check()">提交</button>

</form>
<script>
function check()
{

$('#form').submit(function(){return false;});// true为提交

}

</script>


另一种写法是用onsubmit,其实都是一样的,只是写法不同,个人习惯
<form action="index.html" method="post" name="form" id="form" onsubmit="return check()">

<pre name="code" class="javascript"><button >提交</button>
</form><script>function check(){return false;}</script>
 


当我们用ajax去获取后台数据并做一些表单验证的时候,会发现return false没有用,

看看平时的写法:


function  xxx()

{

$.ajax({

success:function(data)

{

if(data.flag)

{

return true  / false;//返回的内容并不是被onsubmit所接收,而是xxx这个function,所以需要另外借住一个变量来接收这个标志(true or false)再在$.ajax()外return 给onsubmit


}

}



})



}


有时候我们通过$('xxx').submit()提交表单数据,要注意,在此之前文档已经加载完毕,所以建议把script文件或内容放到文档最后而不是放在head标签内部。这样就不用担心会因为文档没有加载而导致出现 xxx  undefind的错误