2015-04-06 37 views
0

由於真正的驗證應該和服務器端發生,我希望jQuery只驗證,如果需要的字段不是空的。所以,我已經得到了這些默認值:在jQuery驗證插件,如何驗證必填字段爲空,(沒有語法驗證)?

jQuery.validator.setDefaults({ 
    rules: { 
     required: true, 
     email: false // Experimental, does nothing? 
    } 
    }); 

的問題是,jQuery驗證插件還執行其他檢查(如電子郵件語法),從服務器端實現不同。如何關閉它們?

據我得到了他們的documentation設置屬性,如:rules>emailrules>url應該做的伎倆......但很顯然它不?

回答

0

由於這是未執行在寫作時的最新版本(1.13.1)正如Sparky在他的回答中所述,我已經提出了幾行代碼來完成外部記錄插件功能。分享:

jQuery.validator.methods.email = function(){return true;} 
jQuery.validator.methods.url = function(){return true;} 
// Etc for each method you wish to disable 

這段代碼的含義是,它取代自定義函數總是返回true原來的驗證方法。這樣,HTML5屬性可以保持不變,並且不需要爲jQuery Validate插件設置中的每個單獨字段分配規則。

這些自定義函數可以很容易地擴展,因此如果您仍然需要,可以選擇調用原始驗證方法(例如,存儲在變量中)。

乾杯

0

對象的.setDefaults()方法裏面的文字是沒有意義的這個插件...

jQuery.validator.setDefaults({ 
    rules: { 
     required: true, 
     email: false // Experimental, does nothing? 
    } 
}); 

您可以分配規則,各個字段使用rules選項時......

rules: { 
    myFieldName: { // <- this was missing 
     required: true 
    } 
} 

email: false //實驗,什麼都不做?

我不確定你認爲email: false應該做什麼。

無論如何,你不能使用.setDefaults()超過乘這已經到位與.validate()任何規則。如果您試圖「移除」已通過任何其他方式實施的jQuery驗證規則,則可以使用the .rules('remove') method

但是,我質疑你的整個方法。爲什麼要首先分配email規則,以後才能刪除它。 在你的情況下,沒有足夠的信息或代碼顯示你知道你在做什麼或者是什麼被破壞。


編輯

通過評論,據悉,正在使用的email規則,因爲現場有HTML 5特性type="email",該插件自動拾取並分配email規則。

如果您不想要email規則,那麼您不能使用type="email"字段。使用type="text"並避免其他HTML 5驗證屬性。

+0

重評,對不起: 你是說(而不必爲每個單獨的領域做到這一點),它是不可能關閉所有的驗證規則,除了'required'?回答你關於我的方法的問題。我沒有分配任何規則,這是默認情況下發生的,我試圖阻止它。我只需要檢查必填字段是否爲空。不,我不想要HTML5驗證。另外我知道jQuery Validate插件與服務器端驗證無關(我已經構建它),謝謝。我所需要的只是jQuery驗證插件,只有在必填字段爲空時纔會檢查。沒有其他的。 –

+0

@ Alph.Dev,**默認情況下,這怎麼可能發生?**有些東西是告訴插件首先分配這些規則,這是完全不存在的問題。 – Sparky

+0

沒有什麼可以忽略的。我有多種形式的網站。在JS中,只有在問題描述+此行之後發佈的代碼:'$('form')。validate();'。 –