2010-10-11 3 views
0

Я пытаюсь использовать Jquery Validate Plugin, и я смог выяснить, как использовать его в статических полях.JQuery Custom Validate Plugin AddMethod on Dynamic Forms

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

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

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

+0

FYI в jsfiddle если вы поставите JS код в JavaScript помечено поле это тоже приятно. [глядя в это сейчас] – naugtur

+0

во-первых, похоже, что у вас отсутствует класс machineID. Затем вы должны перебирать входные данные в форме - ваш цикл включает скрытый шаблон. единственная проблема, с которой я столкнулся сейчас, заключается в том, что сценарий не обновляется, когда вы исправляете другой дубликат (а не тот, который вызывает валидацию в первую очередь). Скоро обновите. –

ответ

1

Прежде всего - поместите комментарии в свой код во время написания.

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

var arrElements = $(".machineID"); 

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

и ваш друг не работает. Я отредактировал его http://jsfiddle.net/PaTJ4/

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

удачи

+0

Отличное сообщение .. Извините, я просто печатаю все, поэтому забыл разместить комментарии. Хотя у меня все еще есть один запрос, на каждом добавочном методе, который я вижу, я всегда вижу эту строку this.optional (element). Что подразумевается под этой линией? Я просто добавил, что это всегда необходимо. –

+0

@Mark Это часть плагина проверки, я полагаю. И он проверяет, установлено ли поле как необязательное, чтобы оно не проверяло необязательное поле. Мне это не нужно. Но я никогда не использовал плагин проверки – naugtur

0

Я усовершенствовал версии - когда дублирование обнаружено, любой один из дублированных полей должны быть отмечены как недействительные, и должны быть в состоянии изменить для того, чтобы исправить эту проблему. Таким образом, вам нужно будет каждый раз проверять все остальные поля (используя 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; 
     } 
    }