2016-11-24 4 views
0

사용자 정의 클라이언트 측 유효성 검사를 Spree의 checkout/address 페이지의 입력 필드에 추가하려고합니다. JQuery와이 방법의 유효성을 검사 추가, 내 vendor/assets/javascripts/spree/frontend/checkout/address.js.coffee 내부사용자 정의 클라이언트 측 폼 유효성 검사를 Spree 프론트 엔드에 추가

= form.input :vat_number, label: Spree.t(:vat_number) 
  • 을 :

    1. 이 (여기 HAML & SimpleForm 사용) 폼에 입력을 추가 그래서, 여기에 내가 지금까지 한 일이다

      ($).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 ... 
      
    ,369 :와 validate() 호출에 규칙을 삽입

    나머지 폼 유효성 검사가 작동하더라도 유효성 검사기가 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') 
    

    사람이 작업을 수행하기 위해 노력하고 있습니까?

  • 답변

    0

    문제가 무엇인지 알아 냈습니다.

    address.js.coffee 파일의 하단에 Spree.onAddress 전화를 한 후 분명히 vatNumber 메서드가 추가되었습니다. 이것은 CoffeeScript 일 경우

    내가 address.js.coffee의 코드 전에 실행 나는 그것이라고하는 다른 곳으로 addMethod 전화를 (/ 이동 갑자기했다.

    을 지금, 나는 궁금하다. 순서가 수 코드 변환 후 코드 변경 코드 Javascript?