-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

OK、最初にこの検証を行いますが、実際に使用しているのは「パイのチェリー」だけです。そして、より使いやすいフォルムを実現するのに役立ちます。定義済みのフォーム チェック ライブラリを使用することを検討する必要があります。最後になりましたが、常にサーバー側で検証してください。

何が間違っているかを説明するには、この jsfiddle を見てください: http://jsfiddle.net/JLySr/

テキスト内のすべての小さなスペースにより、検証の通過が許可/不許可になります。したがって、最初の検証の後、ajaxはおそらくスペースなどを返します...テキストをトリミングすることで、これを見た目に改善することができます:

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

しかし、これは実際の検証ではありません。ご存知かもしれませんが、クライアント側で Web ページの一部を削除するのは非常に簡単です。

于 2013-03-13T00:39:53.763 に答える