どの送信ボタンがクリックされたかに基づいて親フォームを選択するにはどうすればよいですか? 質問する

どの送信ボタンがクリックされたかに基づいて親フォームを選択するにはどうすればよいですか? 質問する

3 つのフォームがある Web ページがあります。ネストされておらず、1 つずつ並んでいます (ほとんど同じで、異なるのは隠し変数 1 つだけです)。ユーザーは 1 つのフォームにのみ入力し、1 つの JS スクリプトだけですべてのフォームを検証したりしたいと思います。

では、ユーザーがフォーム#1 の送信ボタンをクリックしたときに、js スクリプトがフォーム#1 のフィールドのみを処理するようにするにはどうすればよいでしょうか。 $(this).parents と関係があると思われますが、どうすればよいかわかりません。

私の検証スクリプト (他の場所で単一のフォームのみで使用したもの) は次のようになります。


$(document).ready(function(){
    $("#submit").click(function(){
        $(".error").hide();
        var hasError = false;

        var nameVal = $("#name").val();
        if(nameVal == '') {
            $("#name").after('Please enter your name.');
            hasError = true;
        }


        if(hasError == false) {blah blah do all the processing stuff}

では、 $("#name").val() のようなものを $(this).parents('form').name.val() に置き換える必要がありますか? それとも、これを実行するより良い方法がありますか?

ありがとう!

ベストアンサー1

次のようにフォームを選択できます。

$("#submit").click(function(){
    var form = $(this).parents('form:first');
    ...
});

ただし、通常は、フォーム自体の送信イベントにイベントをアタッチする方が適切です。これは、フィールドの 1 つから Enter キーを押して送信するときにもイベントがトリガーされるためです。

$('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});

フォーム内のフィールドを選択するには、フォーム コンテキストを使用します。例:

$("input[name='somename']",form).val();

おすすめ記事