2015-12-02 3 views
0

Я столкнулся с вопросом о том, как правила применяются при проверке jQuery.Правила проверки правильности jquery применяются, даже если вход не установлен по необходимости

Если объявлено правило для FirstName, проверка jQuery приведет к ошибке проверки для этого поля, даже если вход не имеет необходимого набора атрибутов.

Я запускаю проверку как вложенную функцию в плагине форматирования формы jQuery. Плагин генерирует форму на основе данных json, полученных от marketo. Причина вложения проверки заключается в том, что валидация нескольких форм на нескольких доменах может управляться одним сценарием.

Причина, по которой я запрашиваю, как я могу запретить запуск правил, требуемый атрибут не применяется к полю формы, из-за того, как marketo выводит формы и имена форм.

Пример формы:

<form action="" id="form" method="post"> 
    <div class="formrow"> 
    <label for="FirstName">First name: </label> 
    <input type="text" name="FirstName" id="FirstName"> 
    </div> 
    <input type="submit" value="submit"> 
</form> 

Пример проверки:

$('#form').validate({ 
    rules: { 
     FirstName: { 
     required: true 
     } 
    }, 
    messages: { 
     FirstName: "Please enter your name" 
    }, 
    submitHandler: function (form) { 
     $(form).ajaxSubmit({ 
     error: function (response) { 
      console.log(response); 
     }, 
     success: function (response) { 
      console.log(response); 
     } 
     }); 
    }, 
    errorElement: "em", 
    errorPlacement: function (error, element) { 
     error.appendTo(element.closest(".formrow").children("label")); 
    } 
    }); 

Я собрал демо, чтобы показать проблему.

http://jsfiddle.net/onebitrocket/dzv5ugo0/

ответ

1

Атрибут required не на элементе, но вы определили required: true в rules объекта для FirstName, следовательно, почему поле является обязательным. Удалите объект rules для этого элемента и он должен работать по вашему усмотрению.

Updated fiddle

+0

Спасибо, но это будет работать только для одной формы. Мне нужно обходное решение, поэтому я могу использовать один код проверки, основанный на разных формах, где всегда будут не все поля - один из вариантов, который я могу придумать, - полностью удалить правила для всех форм, это, похоже, хорошо работает. Другим было бы динамическое генерирование правил и сообщений проверки на основе данных json, предоставленных marketo. Интересно, возможно ли это? – onebitrocket