3

私は基本的にフォームの検証を行おうとしています。Evertyhingは正常に機能します。1つを除いて。まず、私のコードは次のとおりです。

        $('#submit_btn').click(function(){  

        $("input:not([type=radio],[type=checkbox])").each(function() {
                if ($(this).val() == ""){
                 $('#'+$(this).attr("name")+'_error').show("");
                }
                else{
                   $('#'+$(this).attr("name")+'_error').hide("normal");
                }

            });
            if(!($("div[id$=error]").is(":visible")))
                               alert("a");

        });

送信ボタンをクリックすると、ラジオボタンまたはチェックボックス以外の入力がチェックされます。また、入力が空の場合はエラーが表示されます。

入力を入力すると、エラーが非表示になります。

最後に、エラーメッセージが表示されているかどうかを確認します。表示されていない場合は、フォームを送信します。

私の問題は、.hide( "normal")を使用した小さなアニメーションでエラーメッセージを非表示にすることです。したがって、最後のエラーメッセージを非表示にするプロセス中に、最後のifステートメントが実行され、目に見えるエラーメッセージがあると見なされると思います(ただし、非表示のプロセスでした)。

非表示プロセスが完了した後、ifステートメントを実行するにはどうすればよいですか?

私の場合、エラーメッセージが残っていないときは、[送信]ボタンをもう一度クリックするとアラートが表示されます。

私は自分の問題について明確にしたいと思います。そうでない場合、私はそれを書き直そうとします。

ありがとう!

4

2 に答える 2

5

でこれを行う:visibleのは少しハッキーで、間違いなく遅いです。代わりに変数を使用してください:

$('#submit_btn').click(function(){  
    var error = false;

    $("input:not([type=radio],[type=checkbox])").each(function() {
        if ($(this).val() == ""){
            $('#'+$(this).attr("name")+'_error').show(400);
            error = true;
        }
        else{
            $('#'+$(this).attr("name")+'_error').hide(400);
        }
    });
    if(error)
        alert("a");

});
于 2011-01-21T15:12:09.073 に答える
0

関数のアニメーションが終了した後に警告メッセージを表示することが目標の場合は.hide("normal")、「コールバック」関数を引数として関数に渡す必要があり.hide()ます。ドキュメントを参照してください

ここで例を見てください:

$('#submit_btn').click(function(){  
  $("input:not([type=radio],[type=checkbox])").each(function() {
    if ($(this).val() == ""){
      $('#'+$(this).attr("name")+'_error').show("");
    }
    else{
      $('#'+$(this).attr("name")+'_error').hide("normal", function() {

        // This function will be executed when the "normal" animation is complete

        if(!($("div[id$=error]").is(":visible")))
          alert("a");

      });
    }
  });
});

私の 2 セント... ただし、エレガントなフォーム検証プラグインを求める皆さんの励ましに耳を傾けたいと思うかもしれません。

于 2011-01-21T15:16:19.687 に答える