禁用再启用提交按钮
问题描述:
我试图用Ajax.I检查与此代码的每一行来验证一个表单: 数据是传递给formValidate.php文件:禁用再启用提交按钮
$(document).ready(function(){
$("form").submit(function(event){
stuId= $("input[name='stuId']").val();
stuName= $("input[name='stuName']").val();
stuDoB= $("input[name='stuDoB']").val();
stuAdd= $("input[name='stuAdd']").val();
$.get("formValidate.php?stuId="+stuId,function(data){
$(".formCheck:eq(0) span").text(data);
$.get("formValidate.php?stuName="+stuName,function(data){
$(".formCheck:eq(1) span").text(data);
$.get("formValidate.php?stuDoB="+stuDoB,function(data){
$(".formCheck:eq(2) span").text(data);
$.get("formValidate.php?stuAdd="+stuAdd,function(data){
$(".formCheck:eq(3) span").text(data);
});
});
});
});
event.preventDefault();
for(var i=0;i<=3;i++) {
var a= $(".formCheck:eq("+i+") span").text();
if(!a)
break;
if(i==3)
$("form").unbind('submit').submit();
}
});
});
在每一个检查我将禁用提交按钮。 最后,如果任何验证跨度有任何文本,提交不会被绑定回来; 问题是我第一次点击空白字段提交按钮,没关系,它显示验证。但是当我再次点击提交按钮时,当字段仍然是空白时提交表单。 我的问题是什么?请帮助我?
答
好的,首先这个验证,你真的应该只是“樱桃馅饼”。并帮助您实现更加用户友好的形式。你真的应该考虑使用一些预定义的表单检查库。最后但并非最不重要的,总是在服务器端进行验证。
解释什么是错的,请看看这个的jsfiddle: http://jsfiddle.net/JLySr/
在文本每个小空间将允许/不允许你通过验证。 所以首先验证阿贾克斯后可能会被修边的文本返回一个空间或类似的东西... 你可能一个悦目改善这一点:
var a= $(".formCheck:eq("+i+") span").text().trim();
但仍这是不是真正的验证。正如你可能知道在客户端删除部分网页非常容易。
如果你正在处理一个简单的表单[你应该提供它的标记],那么每行的验证调用是完全可以避免的。验证表单客户端,然后向服务器提供验证规则。 – moonwave99 2013-03-13 00:02:21
你有没有尝试触发点击事件提交按钮,而不是提交evt? – jtheman 2013-03-13 00:03:26
但我必须检查输入,如在数据库中没有相同的数据,我认为Ajax对此很好 @jtheman我的表单有一个按钮类型=提交 – 2013-03-13 00:04:11