1. ホーム
  2. jquery

[解決済み] どの送信ボタンがクリックされたかに応じて、親フォームを選択するには?

2022-07-09 13:02:54

質問

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

では、ユーザーがform#1の送信ボタンをクリックしたとき、私のjsスクリプトがform1のフィールドのみを扱うようにするにはどうしたらよいでしょうか? $(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() に置き換える必要があるのでしょうか? それとも、もっといい方法があるのでしょうか?

ありがとうございます。

どのように解決するのですか?

このようにフォームを選択することができます。

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

しかし、一般的にはフォーム自体の submit イベントにイベントをアタッチする方がよいでしょう。

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

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

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