2015-05-21 5 views
2

В настоящее время я использую плагин правил проверки правильности jquery, и у меня возникает следующая проблема. Хотя некоторые из моих полей ввода имеют статические идентификаторы. Есть несколько полей, которые динамически генерируются, поэтому идентификатор не является статическим. К сожалению, я не контролирую генерируемый идентификатор. Я могу использовать цикл .each для получения идентификаторов, но как передать переменную ID в правила для проверки. Есть ли способ использовать переменную в имени поля? Если эти поля, где требуется только, я бы использовал другой метод, однако мне нужно делать проверки регулярных выражений против ввода.Переменная как имя поля jquery правила проверки

$j('form').validate({ 
    rules:{ 
     txtFirstName: 'required',               
     txtLastName: 'required',        
     txtEmail: 'required', 
     randomIdFieldVariable: 'Regex check" 
    } 
); 
+0

Этот плагин не использует 'ID' элемента ... он может использовать только' name'. Но ** нет **, вы не можете использовать переменную вместо поля 'name' в методе' .validate() '. Вам нужно будет объяснить это лучше, построив более полный пример, если вы хотите предложить некоторые обходные пути. – Sparky

ответ

4

Вы не можете использовать элемент id, ни переменной вместо поля name в методе .validate().

$('#myform').validate({ 
    rules: { 
     fieldname: { // <- MUST be the 'name' attribute of the element 
      required: true 
     } 
    } 
}); 

Однако, когда name элемента неизвестно, существуют и другие методы для добавления правил.

  1. определенные правила, которые могут быть объявлены через логическое значение может быть объявлена ​​как class.

    <input type="text" name="foo" class="required" /> 
    
  2. Некоторые правила, которые также существуют как HTML 5 атрибуты могут быть объявлены просто включив атрибут HTML 5 на входном элементе.

    <input type="text" name="foo" required="required" /> 
    

    Это может работать для вас, так как есть атрибут проверки HTML 5 называется pattern, что плагин JQuery Validation будет использовать. Значение pattern является регулярным выражением. См: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input

  3. Вы можете прикрепить the jQuery Validate plugin' .rules('add') method к JQuery .each() используя любой селектор JQuery вы хотите. Вам не обязательно знать name, но все элементы для проверки должны по-прежнему содержать уникальный атрибут name.

    $('.myClass').each(function() { 
        $(this).rules('add', { 
         required: true, 
         messages: { // <- optional 
          required: "optional custom message" 
         } 
        }); 
    }); 
    
+0

Ты мужчина! Я даже не думал об использовании атрибута pattern. Работает как шарм! – Carbongixxer

Смежные вопросы