我正在使用jquery驗證並設置了組。但是,我很難找出從包含的各個字段分別驗證每個組的最佳方式。jQuery驗證:組驗證,但不是字段驗證
爲了說明這一點:
我有城市,州和郵編(按順序)。如果有人輸入了zip的值,他們應該得到肯定的確認(我已經得到了該部分使用輸入的綠色複選標記),但是,只要狀態和zip爲空,組驗證消息仍應顯示。
在進行各種嘗試時,我遇到了以下問題: - 用戶跳過「城市」並驗證消息顯示,但當爲「zip」提供輸入時,驗證消息消失。 (這很奇怪...也許是一個錯誤?) - 用戶輸入「城市」,他們甚至在進入「狀態」之前就會收到組錯誤消息 - 用戶輸入「城市」,但不會得到複選標記,因爲該組中的其他輸入爲空
我傾向於通過覆蓋「onfocusout」事件來解決這個問題(通過讓它檢查聚焦輸出中的所有輸入),但不確定是否有更好的方法一些驗證的內置方法
謝謝!
* UPDATE
我拿出解決方案是相當醜陋,他們沒有始終如一地工作,下面就是一個例子,它導致了我上面列出的第一個問題的倒數。現在,驗證消息僅在組中填寫最後一個字段時顯示。
也許組驗證依賴於組中最後一個測試的驗證結果嗎?
反正...這裏的爛攤子,我拿出這麼遠:
設置組:
groups : { location : 'city state zip' }
該組創建一個規則(注意它必須是一個數組保持順序):
rules : { location : ['city, 'state', 'zip']}
現在覆蓋onfocusout在:
onfocusout : function(el) {
var groups = this.groups
, elName = el.name
, elGroup = groups[elName]
, $el = $(el)
if (!this.checkable(el)){
this.element(el));
}
// If the element belongs to a group, validate all elements in the group
// that come before the current element
if (elGroup) {
var groupMembers = this.settings.rules[elGroup];
for (var i=0; i<groupMembers.length; i++) {
if (groupMembers[i] === elName) {
break;
}
this.element($('[name="' + groupMembers[i] + '"]'));
}
}
}
是的...我認爲你是沒錯,但我會堅持一段時間,以防某人有合理的即時解決方案。瞭解我現在知道的關於jquery驗證對團隊支持的知識我可能會採取一種非常不同的方法:/ – uglymunky
爲什麼不把團隊出去?只需添加自己的邏輯來檢查分組項目的排列。這聽起來像你已經有點這樣做,無論如何與你的綠色複選標記。 – Terry
團體將不得不留在現在作爲權宜之計......但是,如果沒有其他解決方案出現,我將不得不按照你的建議去做,然後回到這個實施所有羣組/消息的東西上我自己...這可能是最好的解決方案,但它也會相當耗時 – uglymunky