2017-09-17 4 views
0

jquery.validate.min.jsを使用してクライアント側の入力を検証しようとしています。jQueryの検証に異常な名前の入力を選択すると、構文エラーが発生する

入力名は一例に過ぎないが<input name="price">

のようなテキストである場合、これはうまく機能:私は、自動的に生成された入力をターゲットにしようとすると、しかし

$("#foo-post-form").validate({ 
    rules: { 
    price: { 
     required: true, 
     number: true 
    } 

    } 
}); 
.error { 
    color: red 
} 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script> 

<form id="foo-post-form"> 

    <label>price</label> 
    <input name="price"> 

</form> 

このようなもの<input name="foo_fields[15536]">

私は入力の名前を変更することはできません

"Uncaught SyntaxError: Unexpected token ["

$("#foo-post-form").validate({ 
    rules: { 
    foo_fields[15536]: { 
     required: true, 
     number: true 
    } 
    } 
}); 
.error { 
    color: red 
} 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script> 

<form id="foo-post-form"> 

    <label>custom</label> 
    <input name="foo_fields[15536]"> 

</form> 

を取得します。検証のためにそのような入力を選択するにはどうすればよいですか?

答えて

1

引用符で囲みます。 foo_fields[15536]は、配列またはオブジェクトのいずれかを表します。

$("#foo-post-form").validate({ 
rules: { 
    "foo_fields[15536]": { 
    required: true, 
    number: true 
    } 
} 
}); 
+0

これは動作しますが、おかげで、私が持つ複数のルールに問題を抱えていたが、あなたの答えは、私は尋ねた質問に対する正しい答えです。 –

+0

@Ihazkode助けて嬉しいです! –

1

私はその検証ライブラリを使用したことがありませんが、私は、あなたが入力オブジェクトを変更した場合、それはあなたの問題を解決するだろうと思いますわ。フィールドのキーをfoo_fields[15536]の代わりに'foo_fields[15536]'という文字列で入力します。

$("#foo-post-form").validate({ 
 
    rules: { 
 
    'foo_fields[15536]': { 
 
     required: true, 
 
     number: true 
 
    } 
 
    } 
 
});
.error { 
 
    color: red 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script> 
 

 
<form id="foo-post-form"> 
 

 
    <label>custom</label> 
 
    <input name="foo_fields[15536]"> 
 

 
</form>

+1

これは動作します、ありがとうございます。私はそれが1分先だったので他の答えを選んだ。 –

関連する問題