2011-07-28 3 views
3

내가 this jQuery validation 플러그인을 사용하여 유명한 받고 있어요 "검증은 함수가 아닙니다".jQuery를

$를 ("# 양식")을 검증되어 있지 함수

할 때 Firebug (및 다른 모든 브라우저의 해당 메시지)에서 유효성을 검사하십시오.

이 말은 jquery-1.4.2.jsjquery.validate.js이 모두로드되기 전에 호출하려고한다는 의미입니다. 나는이 파일들이 validate()을 호출하기 전에을 요청하기 전에 요청했다는 것을 보여주기 위해 Fiddler를 사용했다. 그래서 나는이 두 파일이 브라우저 내에서 완전히로드되었다고 가정 할 수있다.

이 문제를 해결하려면 어디에서 봐야합니까? 스크립트가 먼저 요청 된 경우 순서대로로드해야합니다. 알아낼 방법이 있습니까?

저는 현재 플러그인에 (config 등) 다른 원인이 있다고 생각합니다. 나는 모든 것을 조사했지만 해결책이 아닌 것은 나에게 적용되는 것 같다.

어디에서 볼 수 있나요?

$(document).ready(function() { 
    console.log("loaded"); 
    $("#Form").validate({ 
     rules: { 
      container_0$centre_0$txtFirstName: { required: true } 
     } 
    }); 
}) 

양식은 다음과 같습니다 :

내 jQuery를은 코드의 단순화 된 버전이

<form method="post" action="/url" id="Form" enctype="multipart/form-data"> 

<div class="ctrlholder"> 
    <label for="firstname">First Name</label> 
    <input name="container_0$centre_0$txtFirstName" type="text" id="txtFirstName" class="required" /><em>*</em> 
    <div id="errFirstName" class="error" style="display:none;">Please enter your first name</div> 
    </div> 
</form> 

.

+1

빈 페이지로 시작하여이 문제가 보일 때까지 추가를 시작하는 것이 좋습니다. –

+0

또한 $가 실제로 jQuery 객체인지 확인하십시오. –

+0

js 코드를 게시 할 수 있습니까? – alesdario

답변

1

(this 인 것처럼 보입니다)이 문제를 일으키는 것으로 보입니다. 이것을 제거 할 때 나는 평소와 같이 유효성을 검사 할 수 있습니다.

더 자세히 조사 하겠지만 스크립트가 축소 된 버전을 사용하고 있습니다. 그 이유는 그것이 has its own validation 일 가능성이 높기 때문일 수 있습니다.

이것은이 엣지 케이스를위한 훌륭한 미래 자원입니다.

대신
$. validator.setDefaults ({ 
    submitHandler: function() {alert ('submitted'); } 
}); 

:

+0

게시 해 주셔서 감사합니다. 나는이 문제로 1 시간 동안 씨름하고 있었고, 내가 무엇을 부르고 있었는지 살펴보기를 강요했다. 동일한 문제가 있었고 다른 플러그인이 양식 요소에 대한 제어권을 원했습니다. –

1

.validate()은 jQuery 자체의 방법입니다. 유효성 검사 플러그인의 메소드 인 것 같습니다. that plug-in이 제대로 포함/설치되어 있는지 확인하고, 플러그인을 사용하여 작업 할 때 jQuery의 호환 버전을 사용하고 있는지 확인해야합니다.

this jsFiddle에서 단지이라는 속성이 jQuery가 포함 된 jQuery 개체에 있음을 알 수 있습니다.

+0

아니요 - 라이브러리를 추가하면 작동하는 것을 볼 수 있습니다 ([jsFiddle again] (http://jsfiddle.net/43Q6T/1/)을 확인하십시오) –

0

내가 넣어

jQuery.validator.setDefaults ({ 
    debug: true, 
    success: 'valid' 
}); 

그리고 그것은 나를 위해 일했습니다.