Конфликт имени плагина проверки Jquery с Zend_Form - PullRequest
0 голосов
/ 16 марта 2010

По умолчанию 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;
        });
    },

1 Ответ

3 голосов
/ 16 марта 2010

Вы можете использовать опцию ignore плагина проверки.

$("#yorform").validate({
    ...
    ignore: "input[type=hidden]"
})

Это должно, например, остановить плагин от проверки любых скрытых входов

Проверьте документацию для получения дополнительной информации

...