Мне нужно проверить определенные поля в зависимости от того, какая кнопка отправки была нажата, и у меня есть следующий код, который работает отлично.
(я знаю, что уже существует метод «больше 3»), но я хотел убедиться, что вы можете добавлять собственные методы)
<script type="text/javascript">
var _btnClicked = "";
$(document).ready(function() {
$.validator.addMethod('custom', function(value, element, param) { if (param) { return value > 3 } return true; });
$("#form1").validate({
rules: {
input1: { required: function(element) { return _btnClicked == 'div1'; } },
input2: { custom: function(element) { return _btnClicked == 'div2'; } } },
messages: {
input1: "Required",
input2: "Greater than three"
}
});
});
</script>
<form id="form1">
<div id="div1" class="div1">
<input id="input1" name="input1" type="text" class="div1"/>
<input id="btn1" name="btn1" type="submit" value="Form 1" class="div1" onclick="_btnClicked = 'div1'; if (!$('#form1').validate().form()) { return false; }" />
</div>
<div id="div2" class="div2">
<input id="input2" name="input2" type="text" class="div2"/>
<input id="input3" name="input3" type="text" class="div2"/>
<input id="btn2" name="btn2" type="submit" value="Form 2" class="div2" onclick="_btnClicked = 'div2'; if (!$('#form1').validate().form()) { return false; }" />
</div>
</form>
Моя проблема в том, что мне делать, если я хочу ограничить свой третий блок ввода максимальной длиной 3?
Я не могу добавить это правило, поскольку ему явно не передается значение 3, поэтому оно не знает, какова максимальная длина!
input3: { maxlength: function(element) { return _btnClicked == 'div2'; } }
Есть идеи?
Или лучшие способы достижения этого!?