2015-12-04 3 views
0

У меня возникла ситуация, когда форма должна быть проверена перед отправкой. В настоящее время я использую плагин проверки jQuery. Однако в зависимости от значения радиокнопки ему нужно только проверить определенные поля.jQuery Validate Re-initialize

Я думал, что возможность повторной инициализации плагина validate будет работать, но при вызове .valid в форме он не проверяет дополнительные поля.

Это мой jQuery для инициализации проверки.

var minVal = function() { 
    $("#user-details-form").validate({ 
     errorClass: "text-danger", 
     rules: { 
      DeliveryFirstname: { required: true }, 
      DeliverySurname: { required: true }, 
      DeliveryCompanyName: { required: true }, 
      DeliveryPostcode: { required: true, postcodeUK: true }, 
      DeliveryAddress1: { required: true }, 
      DeliveryCity: { required: true }, 
      EmailAddress: { required: true, email: true }, 
      Telephone: { required: true } 
     }, 
     messages: { 
      DeliveryFirstname: { required: "First name required" }, 
      DeliverySurname: { required: "Last name required" }, 
      DeliveryCompanyName: { required: "Company name required" }, 
      DeliveryPostcode: { required: "Postcode required", postcodeUk: "Invalid postcode" }, 
      DeliveryAddress1: { required: "First line of address required" }, 
      DeliveryCity: { required: "City required" }, 
      EmailAddress: { required: "Email address required", email: "Invalid email address" }, 
      Telephone: { required: "Telephone number required" } 
     } 
    }); 
}; 

var maxVal = function() { 
    $("#user-details-form").validate({ 
     errorClass: "text-danger", 
     rules: { 
      DeliveryFirstname: { required: true }, 
      DeliverySurname: { required: true }, 
      DeliveryCompanyName: { required: true }, 
      DeliveryPostcode: { required: true, postcodeUK: true }, 
      DeliveryAddress1: { required: true }, 
      DeliveryCity: { required: true }, 
      InvoiceFirstname: { required: true }, 
      InvoiceSurname: { required: true }, 
      InvoiceCompanyName: { required: true }, 
      InvoicePostcode: { required: true, postcodeUK: true }, 
      InvoiceAddress1: { required: true }, 
      InvoiceCity: { required: true }, 
      EmailAddress: { required: true, email: true }, 
      Telephone: { required: true } 
     }, 
     messages: { 
      DeliveryFirstname: { required: "First name required" }, 
      DeliverySurname: { required: "Last name required" }, 
      DeliveryCompanyName: { required: "Company name required" }, 
      DeliveryPostcode: { required: "Postcode required", postcodeUk: "Invalid postcode" }, 
      DeliveryAddress1: { required: "First line of address required" }, 
      DeliveryCity: { required: "City required" }, 
      InvoiceFirstname: { required: true }, 
      InvoiceSurname: { required: true }, 
      InvoiceCompanyName: { required: true }, 
      InvoicePostcode: { required: true, postcodeUK: true }, 
      InvoiceAddress1: { required: true }, 
      InvoiceCity: { required: true }, 
      EmailAddress: { required: "Email address required", email: "Invalid email address" }, 
      Telephone: { required: "Telephone number required" } 
     } 
    }); 
}; 

И это метод радио-кнопка изменения (для справки)

$('input[name="IsInvoiceAddress"]:radio').on("change", function() { 
    var b = ($(this).val().toLowerCase() === "true"); 
    if (!b) { 
     console.log("max val"); 
     maxVal(); 
    } else { 
     console.log("min val"); 
     minVal(); 
    } 
}); 

Я понимаю, что я мог бы просто добавить/удалить дополнительные правила для каждого элемента. используя синтаксис .rules ({}). Но интересно, есть ли способ повторно инициализировать плагин validate в форме.

ответ

1

Я понимаю, что я мог просто добавить/удалить дополнительные правила для каждого элемента. используя синтаксис .rules({}). Но интересно, есть ли способ повторно инициализировать плагин validate в форме.

Нет. Нет способа для повторной инициализации плагина. .validate() - это метод инициализации, и он получает только один раз на форме. Все последующие вызовы всегда игнорируются.

Метод .valid() используется для программного принудительного тестирования валидации в любое время.

Основная идея разработчика, дающая вам метод .rules(), заключается в том, что правила могут быть изменены без беспокойства по поводу повторной инициализации.

+0

Благодарим вас за подтверждение. У меня есть форма, теперь работающая, добавляя и удаляя дополнительные правила, когда переключатель был изменен. – Valeklosse