属性に基づいてルールを追加しようとしているjQuery validationプラグインを使用しています。私はdata-minlength
またはdata-maxlength
に基づいて最小/最大長ルールを追加しています。ここではいくつかのサンプルHTMLです:ループ内のデータ属性に基づくjQuery検証ルールの追加
<form>
<input name="input1" data-maxlength="5" data-minlength="3" required>
<input name="input2" data-maxlength="5" required>
<input name="input3" data-minlength="3" required>
<button>Submit</button>
</form>
私はルールを追加するためにこれをやっているが、それがうまく働いています:
$('input[data-minlength]').each(function(){
if ($(this).data('minlength')) {
$(this).rules("add", {
minlength: $(this).data('minlength')
});
}
});
$('input[data-maxlength]').each(function(){
if ($(this).data('maxlength')) {
$(this).rules("add", {
maxlength: $(this).data('maxlength')
});
}
});
しかし、私はそれを短くしたかったので、私はこれを試してみましたが、それが働いていません。
['minlength', 'maxlength'].forEach(function(item){
$('input[data-'+item+']').each(function(){
if ($(this).data(item)) {
// alert(item) shows the correct rule name
$(this).rules("add", {
// Next line fails, but hardcoding a rule name works
item: $(this).data(item)
});
}
});
});
$.validator.methods[method]
は未定義です。 alert(item)
がルール名が正しいと私に伝えても、何とか間違ったメソッド名が渡されてしまいます。
誰もが何らかの理由でアイデアを持っているのでしょうか、上記の反復作業コードを短くするために私が使用できる代替ソリューションがありますか?
デモ:http://jsfiddle.net/kaVKe/1/
+1それはちょうど秒だった...;) – Yoshi
ありがとう、私はそれが何か基本的なものであることがわかった。 Javascriptは私の強みではない、私は簡単な説明を感謝します。 –