我是JavaScript新手,我對繼承的一些JQuery.validate代碼有點問題。請原諒我,如果答案是顯而易見的:)JQuery變化在瀏覽器中表現不一致
我有以下的驗證方法聲明:
jQuery.validator.addMethod("myMethod", function(value, element, param) {
/*...*/
if (document.getElementById("DOMID") {
/*...*/
}
/*...*/
)};
本質的方法檢查某個DOM對象的存在,並將它設置一些不同的驗證參數,如果它確實存在。我想驗證的對象是一組包含在父代<div id="DOMID">
中的<select>
輸入,但有幾個不同的「DOMID」情況,每個情況都有稍微不同的驗證規則 - 因此在方法內部進行檢查。我想驗證<select>
每次他們中的一個改變它們的值。然後,我有這樣的激活:
$(".myClass").validate({
onchange: true,
});
隨着myClass
被應用到所有的<select>
輸入我想驗證。
最後,我有這個登記:
jQuery.validator.addClassRules(
{
myClass:
{
myMethod: true,
}
}
這只是正常的瀏覽器 - 每個更改的<select>
選項之一時驗證應用。
但是,在Firefox中,情況並非如此 - 我發現我必須模糊select以便驗證激活。所以,這是一個問題:爲什麼Chrome和Firefox之間的變化行爲有所不同?或者情況並非如此,並且在我的代碼中還有其他的東西是導致這種不一致的原因嗎?
The second問題我有一些我覺得很奇特的東西。在嘗試修復的火狐沒有驗證,直到模糊的問題,我改變了我的JavaScript getElementByID...
使用jQuery,而不是:
if ($("#DOMID").length > 0) { [...]
(我也試過if ($("#DOMID").get(0))
,但他們做同樣的事情,我想 - 不幸的是,作出Firefox的行爲正常)
奇怪的是,我做了這個改變後,Chrome停止驗證的變化,只會驗證模糊。這是我改變的唯一代碼行 - 我自此將其切換回來,並且Chrome再次正常運行。爲什麼那發生?驗證方法的內部如何影響它的被調用時間?
希望這個問題有道理 - 請讓我知道,如果任何額外的信息會有所幫助!任何用於調試這個問題的智慧的話都會非常感激。非常感謝您的任何建議!
顯示足夠的代碼來構造一個簡潔完整的演示代碼,其中包含相關的HTML標記,而不是顯示一點零碎。 – Sparky