8

jqueryバリデーターで同じ名前の2つの入力を検証しようとしています..

<script src='
            http://code.jquery.com/jquery-latest.min.js '></script>
            <script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js'></script>
            <script>
            $(document).ready(function(){

            $('#frm').validate();

            $("[name=inp_text]").each(function(){
            $(this).rules("add", {
            required: true,
            checkValue: true
             });   
           });

                $.validator.addMethod("checkValue", function(value, element) {
                var response = ((value > 0)&&(value <= 100))||((value == 'test1')||(value =='test2'));
               return response;
               }, "invalid value");

            })

            </script>


            <form id='frm' method='post'>
            <input type='text' name='inp_text'/><br>
                <input type='text' name='inp_text'/><br>
            <input type='submit' name=''/>
            </frm>

しかし、このコードを実行すると、最初の入力のみが検証され、2 番目の入力は単純に無視されます。

私も使用してみ<input type='text' name='inp_text[]'/><br>ましたが、まだ機能していません。

何を変えればいいの…?

前もって感謝します

4

4 に答える 4

18

「jqueryバリデーターで同じ名前の2つの入力を検証しようとしています...」

<input type='text' name='inp_text'/>
<input type='text' name='inp_text'/>

「しかし、このコードを実行すると、最初の入力のみが検証され、2 番目の入力は単純に無視されます」

inputの 2 つのフィールドをtype="text"同じにすることはできません。そうしないとname、このプラグインが正しく機能しません。name属性は一意である必要があります。 (一意であることの例外の 1 つnameは、チェックボックスまたはラジオ入力の「グループ化」はname、対応する送信が単一のデータ ポイントであるため、同じものを共有することです。ただし、nameチェックボックスおよびラジオ要素の各グループに対しては依然として一意である必要があります。)

「何を変えたらいいの…?

name属性を一意にします。

<input type='text' name='inp_text[1]'/>
<input type='text' name='inp_text[2]'/>

次に、「で始まる」セレクターを使用し^=ます...

$("[name^=inp_text]").each(function () {
    $(this).rules("add", {
        required: true,
        checkValue: true
    });
});

動作デモ: http://jsfiddle.net/PgLh3/

id: メソッドを使用するときに要素をターゲットにすることもできますがrules('add')、この場合、プラグインは各要素で一意を必要とするため、何も解決されません。 nameinput

于 2013-04-01T14:24:39.877 に答える
0

ルールやメッセージなど、次のような構成を追加します

multipleInputSharedName: {
        inp_text: true
    }

jquery.validate.js のコードを変更 メソッド名: 要素

以下を置き換えます

if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
                return false;
            }

以下で

if ( (!validator.settings.multipleInputSharedName[this.name] && this.name in rulesCache) || !validator.objectLength( $( this ).rules() ) ) {
                return false;
            }
于 2016-01-14T01:54:20.253 に答える
-1

はい、JQuery 検証は最初の出現のみを検証します。テキスト ボックスに別の名前を使用します。または 同じ名前でも異なる ID を使用できます。IDに従ってチェックを適用します。

$("#myform").validate({ rules: { #id_of_field: { required: true, checkValue: true } } });

于 2013-04-01T12:12:56.277 に答える