Tôi đang sử dụng plugin jQuery validation cố gắng thêm quy tắc dựa trên thuộc tính data-
. Tôi đang thêm quy tắc min/maxlength dựa trên data-minlength
hoặc data-maxlength
. Dưới đây là một số mẫu HTML:Thêm quy tắc xác thực jQuery dựa trên thuộc tính dữ liệu trong vòng lặp
<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>
tôi đang làm điều này để thêm các quy tắc và nó làm việc tốt:
$('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')
});
}
});
Nhưng tôi muốn để rút ngắn nó lên, vì vậy tôi cố gắng này và nó không làm việc:
['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)
});
}
});
});
Lỗi này là do $.validator.methods[method]
không xác định. Bằng cách nào đó nó nhận được tên phương thức sai được truyền cho nó, mặc dù alert(item)
cho tôi biết tên quy tắc là chính xác.
Có ai có bất kỳ ý tưởng nào tại sao hoặc có giải pháp thay thế mà tôi có thể sử dụng để rút ngắn mã làm việc lặp đi lặp lại ở trên không?
Demo: http://jsfiddle.net/kaVKe/1/
+1 Vì nó chỉ là giây ...;) – Yoshi
Cảm ơn, tôi biết đó là điều cơ bản. Javascript không phải là điểm mạnh của tôi, tôi đánh giá cao sự giải thích nhanh chóng. –