JQuery Custom Validate Плагин AddMethod на динамических формах - PullRequest
0 голосов
/ 11 октября 2010

Я пытаюсь использовать плагин Jquery Validate, и мне удалось выяснить, как использовать его в статических полях.

Моя проблема заключается в том, как использовать его в моих динамических формах.Я создал скрипку, чтобы обсудить мою проблему.Надеюсь, у вас хватит терпения прочитать это.Скриптовая ссылка здесь

Теперь вот что я хочу сделать, проверьте идентификатор машины, введенный в каждом текстовом поле, и убедитесь, что он уникален.Допустим, вы дважды вводите ABCD-123, и система должна предупредить вас, что он не уникален.

Надеюсь, что кто-нибудь может мне помочь.Спасибо

Ответы [ 2 ]

1 голос
/ 11 октября 2010

прежде всего - добавляйте комментарии в свой код, пока вы пишете.

ошибка здесь:

 var arrElements = $(".machineID");

arrElements всегда пуст, нет элемента с machineID классом

, и каждый из них не работает.Я реорганизовал его http://jsfiddle.net/PaTJ4/

Ваш код может использовать еще несколько исправлений, это слишком сложно для этой задачи.Но теперь это работает.

удачи

0 голосов
/ 11 октября 2010

Я улучшил вашу версию - при обнаружении дублирования любое из дублированных полей должно быть помечено как недействительное, и его можно изменить, чтобы устранить проблему.Итак, вам нужно будет каждый раз заново проверять все остальные поля (используя validator.element()), но избегать рекурсии (используя validator.validatingOthers).

Я опубликую здесь код для checkMachineIDs для полноты:

    function checkMachineIDs(element){
        if($(element).val() != ""){
            var arrElements = $("#machineList .machineID"); 
            var $element = $(element);
            var validator = $($element[0].form).validate();
            if(arrElements.length > 1){
                var valid = true;
                arrElements.not('#'+$element.attr('id')).each(function() {
                  var current = $(this); 
                  if (current.val() == $element.val())
                    valid = false;
                });
                if (!validator.validatingOthers) {
                    validator.validatingOthers = true;
                    arrElements.not('#'+$element.attr('id')).each(function() {
                        validator.element(this);
                    });
                    if (valid) validator.element($element);
                    validator.validatingOthers = false;
                } 
                return valid;
            }else{
                return true;
            }
        }else{
            return true;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...