我正在尝试将自定义客户端验证添加到Spree的checkout/address
页面中的输入字段。 所以,这里是我迄今所做的:将自定义cient-side表单验证添加到Spree前端
输入添加到窗体(这里使用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
字段上运行,但其余表单验证正常。在javascript
调试控制台中,如果我键入$.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')
有没有人尝试这样做吗?