2011-07-28 127 views
3

我使用this jQuery validation插件並獲得著名。在Firebug中驗證(以及所有其他瀏覽器中的等效消息)。jQuery的 「確認不是一個函數」

這意味着我正試圖在加載jquery-1.4.2.jsjquery.validate.js之前調用它。我使用Fiddler來顯示這些文件是要求之前致電validate()所以在沒有更好的方法,我只能假設這兩個文件完全加載在瀏覽器中。

有沒有其他地方我應該看看,以解決這個問題?如果腳本首先被請求,它們也應該按照這個順序加載?有沒有辦法找出答案?

我目前的意見是有其他東西在插件造成這(配置等)。我搜遍了所有的解決方案,但似乎並不適用於我。

任何想法在哪裏看?

我jQuery是:

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

和形式是:

<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

看起來jquery.tools.min.js(它似乎是this)導致了這個問題。在刪除這個我可以像往常一樣驗證。

我會進一步調查,但我只有腳本的縮小版本,儘管我會冒險猜測這是因爲它可能導致方法名稱重疊。

這將是一個極好的未來資源爲這個邊緣情況。

+0

我很高興你發佈了這個,因爲我一直在爲這個問題摔跤一個小時而迫使我去查看我還在呼叫的其他東西。事實證明,我有同樣的問題,另一個插件想要控制我的表單元素。 –

1

我沒有看到.validate()是jQuery本身的一種方法。它看起來像是驗證插件的一種方法。我建議確保that plug-in已正確包含/安裝,並且在使用插件時,應確保您使用的是兼容版本的jQuery。

this jsFiddle可以看出,在jQuery對象中沒有包含jQuery的屬性validate

+0

不 - 但如果我添加庫,你會看到它的工作原理(再次檢查[jsFiddle]) –

0

我把:

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

相反:

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

而且它爲我工作。

相關問題