По умолчанию Zend_Form создает скрытое поле ввода для каждого ввода флажка в форме. Эти входы имеют одинаковое имя.
<input type="hidden" name="zend-cb" value="">
<input type="checkbox" name="zend-cb" id="zend-cb" value="1">
Я хочу установить флажок, поэтому я установил следующее правило в моем валидаторе плагина jquery (http://bassistance.de/jquery-plugins/):
'zend-cb': {
required: true
}
К сожалению, плагин Jquery Validation всегда проверяет скрытое поле вместо флажка. Есть ли способ, чтобы я мог вместо этого проверить флажок? Я понимаю, что могу изменить свой Zend Decorator, чтобы пропустить скрытое поле, но я хотел бы найти чистое решение для JavaScript.
Решение
Чтобы обойти эту проблему, нужно сделать два шага.
1) Добавьте игнорирование: «input [type = hidden]» в качестве опции для метода validate.
$('#myForm').validate( {
ignore: "input[type=hidden]",
rules: { ... }
}
2) Откройте jquery.validate.js и обновите метод findByName, чтобы использовать фильтр игнорирования. Сообщение об ошибке, поданное adamnfish на сайт плагина jquery.
findByName не учитывает настройки игнорирования
findByName: function( name ) {
// select by name and filter by form for performance over form.find("[name=...]")
var form = this.currentForm;
return $(document.getElementsByName(name)).not(this.settings.ignore).map(function(index, element) {
return element.form == form && element.name == name && element || null;
});
},