2011-05-05 3 views
1

jQuery plugin's Validation's 메서드 Valid()은 빈 컬렉션에서 호출 할 때 this[0] is undefined 오류를 발생시킵니다. 나는 jQuery 컨벤션이 빈 콜렉션에 대해서는 아무 것도하지 않을 것이고, 어떤 에러도 던지지 않을 것이라고 생각한다. 또는 나는 뭔가를 놓치고 있을지도 모른다. 누군가가 그것에 빛을 비춰 줄 수 있겠습니까? 플러그인에서빈 콜렉션에서 호출 될 때 jQuery 유효성 검사 플러그인의 메서드가 오류를 throw합니다.

Demo

코드 조각. 이 [0] - 아래에 표시됨 - 컬렉션이 비어있을 때 오류가 발생합니다.

// http://docs.jquery.com/Plugins/Validation/valid 
valid: function() { 
    if ($(this[0]).is('form')) { 
     return this.validate().form(); 
    } else { 
     var valid = true; 
     var validator = $(this[0].form).validate(); // This is the line that throws error 
     this.each(function() { 
      valid &= validator.element(this); 
     }); 
     return valid; 
    } 
+0

그렇게하지 마십시오? – mcgrailm

+0

컬렉션을 호출하기 전에 컬렉션을 검사해야합니까? 나는 우리가 할 필요가 없다고 생각했다. 빈 컬렉션에서 호출 할 때 오류를 던지지 않는 addClass 호출을 포함하도록 코드를 업데이트했습니다. 이 예상되는 동작입니까? –

답변

1

난 그냥 내가 유효성을 다음 내 양식이 ID를 가지고 갖고 싶어 입력에 클래스를 추가한다 않고 내가 그것을 여기

$("#myform").validate() 

에 확인 전화를 내가 양식을 사용하는 방법 중 하나 example입니다 나는 또한 당신이 적용 할 경우 일반적으로 표준 JQuery와의 말하기 demos

보고 추천 검증

는에 클릭 이벤트 같은 말 존재하지 않는 요소는 오류가 발생하지 않습니다. jquery가 건너 뜁니다. 그것은 아마 유효성 검사는 동일을해야한다고 말했지만 분명히 그렇게하지 않았기 때문에 내가 게시 한 방식이나 유효성 검사를하기 전에 선택기의 길이를 확인하는 것이 좋습니다.

+0

데모는이 오류가 발생한 작은 코드 조각입니다. 나는 다소 복잡한 형식을 가지고 있으며 특정 상황에서 전체 형식이 아니라 필드 만 유효하게하고 싶습니다. 또한이 질문의 요점은이 특정한 문제를 해결하는 것이 아니라 다른 장소에서도 잘 처리해야 하는지를 아는 것입니다. $ ("someSelector")와 someMethod가 완료된 곳이 여러 곳 있습니다. 모든 장소를 다시 방문해야합니까? –

+0

@amit_g 내 편집보기 – mcgrailm

관련 문제