-1

我正在尝试使用 Ajax 验证表单。我使用以下代码检查每一行: 数据传递到 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();
    }
       });
    });

在每次检查中,我都会禁用提交按钮。最后,如果任何验证跨度有任何文本,则提交不会被绑定;问题是我第一次单击带有空白字段的提交按钮,没关系,它显示验证。但是当我再次单击提交按钮时,当字段仍然为空时,表单已提交。我的问题是什么?请帮帮我?

4

1 回答 1

0

好的,首先进行此验证,您使用的确实应该只是“馅饼上的樱桃”。并帮助您实现更人性化的表单。你真的应该考虑使用一些预定义的表单检查库。最后但并非最不重要的一点是,始终在服务器端进行验证。

要解释什么是错的,请看这个jsfiddle:http: //jsfiddle.net/JLySr/

文本中的每个小空格都将允许/禁止您通过验证。因此,在第一次验证之后,ajax 可能会返回一个空格或类似的东西......您可以通过修剪文本来改善这一点:

var a= $(".formCheck:eq("+i+") span").text().trim();

但这仍然不是真正的验证。您可能知道在客户端删除部分网页非常容易。

于 2013-03-13T00:39:53.763 回答