Я пытаюсь добавить пользовательскую проверку на стороне клиента в поле ввода на странице checkout/address
компании Spree. Итак, вот что я сделал до сих пор:Добавление пользовательских проверок формы со стороны в Spree frontend
Добавить вход в форму (здесь с помощью Haml & SimpleForm):
= form.input :vat_number, label: Spree.t(:vat_number)
Внутри моей
vendor/assets/javascripts/spree/frontend/checkout/address.js.coffee
, добавить JQuery проверки метод и вставить правило вvalidate()
вызова:($).validator.addMethod "vatNumber", (value, element) -> return false , "Something wrong!" Spree.onAddress =() -> if ($ '#checkout_form_address').is('*') ($ '#checkout_form_address').validate({ rules: { order_bill_address_attributes_vat_number: { vatNumber: true } } }) # ... rest of the file ...
Валидатор, похоже, не работает в поле vat_number
, хотя остальные валидации формы работают. В консоли отладки , если я нахожу $.validator.methods
, я вижу новый метод vatNumber
, поэтому проблема должна быть либо в том, что я вызываю validate()
, либо что-то связанное с тем, что я использую SimpleForm
.
Я изменил код вокруг validate()
вызова к этому:
($ '#order_bill_address_attributes_vat_number').rules("add", {vatNumber: true})
($ '#checkout_form_address').validate()
И я получил следующее сообщение об ошибке в окне javascript
консоли:
TypeError: undefined is not an object (evaluating '$.data(element.form,"validator").settings')
Кто-нибудь пытался это сделать?