2016-07-07 20 views
4

에서 작동하지 않습니다 : http://codepen.io/spacejaguar/pen/KrvqNW양식 초기화 및 필드 초기화 이벤트가 여기에 간단한 예제 parsley.js

HTML :

<form data-parsley-validate> 
    <label for="name">Name:</label> 
    <input type="text" name="name" required> 
    <br> 
    <input type="submit" value="validate"> 

    <p><small>This is a simplistic example, good to start from when giving examples of use of Parsley</small></p> 
</form> 

와 JS가

$(function() { 
    $('form').parsley() 
    .on('form:init', function() { 
     console.log('Form init', arguments); 
    }) 
    .on('field:init', function() { 
     console.log('Field init', arguments); 
    }) 
    .on('form:validate', function() { 
     console.log('Form validate', arguments); 
    }) 
    .on('form:submit', function() { 
     return false; // Don't submit form for this demo 
    }); 
}); 

그것은 그 양식을 보인다 : init 또는 필드 : init 콜백 함수는 전혀 호출되지 않으며, 다른 하나는 정상적으로 작동합니다. 내가 뭘 잘못 했니? 아니면 버그일까요?

[편집]
소스 코드를 살펴본 결과 일부 디버깅 작업을 수행했지만, 리스너가 연결되기 전에 init 이벤트가 트리거 된 것으로 보입니다. 파슬리 인스턴스를 생성하는 것은 모두 같습니다

  • 라고 $ .fn.parsley
    - 새로운 ParsleyFactory가 생성되고, 초기화 FN
    --- ParsleyFactory.prototype.init의 유효성을 검사 설정 등을 호출
    FN 바인딩 호출 ---- ParsleyFactory.prototype.bind이
    이 ----- 새로운 ParsleyForm가 호출 (ParsleyForm, ParsleyField 또는 ParsleyMultiple)을 작성하는 생성자 결정하고 인스턴스를 반환
    ---- ParsleyFactory.prototype.bind 는 초기화를 트리거 이벤트 및인스턴스를 반환합니다. 는 --- ParsleyFactory.prototype.init는 예를
    를 반환 - ParsleyFactory 생성자는 예를 예를
  • CSTE 연구진 (반환 .fn.parsley
  • $ 반환 '필드 : 초기화'기능을() {... })가 묶여 있습니다
+0

흥미 롭. 그래서'$ .Parsley.on ('form : init')'은 작동 할 것이지만 그게 이벤트를 잡는 유일한 방법입니다. 실제로 초기화 직후에 이벤트를 트리거하는 것이 가장 좋습니다 ('setTimeout' 사용). PR을 쓰는 느낌? –

+0

가까운 장래에 그렇게 할 수 없지만 나중에 시도해 보겠습니다. – RamboBambo

답변

1

동일한 문제가 발생했으며 이벤트 트리거링에 대한 연구 덕분에 해결책을 찾았습니다. 그냥 이벤트 처리기를 window.Parsley 개체에 바인딩하면 정상적으로 작동합니다. 예를 들어

:

window.Parsley.on('form:init',() => console.log('form:init')) 
+0

네, 어떻게 든이 문제를 해결할 수 있습니다. 그러나이 방법으로'form : init'을 전역 적으로 바인딩하면 각 파슬리 인스턴스에 대해 호출됩니다. – RamboBambo

+0

사실입니다. 이 경우에는 하나의 형식 만 가지고 있습니다. 솔직히 말하면, 파슬리에서 이벤트 바인딩/이벤트가 발생하는 것은 분명하지 않습니다. – Jonathan