我正在使用jQuery驗證有點複雜的形式。驗證規則通過將代碼分配給表單字段添加到代碼中,但我似乎無法使用額外的參數處理它。我沒有太多的運氣,我害怕jQuery文檔。jQuery驗證中的額外參數
下面是一個例子,它對我有什麼作用,什麼沒有,這個例子顯然不是很有用。
工作(顯示了什麼,但a
誤差)
(僞代碼)
$fieldXclasses = "myrule";
生成的HTML
<input id="x" name="x" value="fromdatabase" class="myrule error" type="text">
JS方法:
jQuery.validator.addMethod("myrule", function(value, element) {
return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");
它與「fromdatabase」中的額外類有「錯誤」顯然不是a
,所以它失敗了「myrule」函數。當我在該字段中鍵入a
時,它將按預期更改爲class="docnmr valid"
。我從這裏得出的答案是,我的驗證設置適用於簡單的情況,所以我不需要在如何加載驗證插件時查找錯誤。
不工作:
(僞代碼)
$fieldXclasses = "myrule:1";
生成的HTML
<input id="x" name="x" value="fromdatabase" class="myrule:1 valid" type="text">
JS方法:
jQuery.validator.addMethod("myrule", function(value, element,param) {
return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");
現在初始狀態從開始就是錯誤的:它應該是錯誤而不是有效的,因爲它不符合要求。我假設類myrule:1
未被解析爲以1
作爲參數調用myrule
函數的內容。但這是我認爲是添加參數的方式,儘管在jquery文檔中我找不到正確的方法。
任何人都可以啓發我如何添加額外的參數?
對於背景:最終目標是使用另一個字段值作爲參數,因爲它們取決於彼此。另一種選擇可能當然是忘記參數,並且我們在規則中尋找正確的字段的this
對象。不知道這是否可行。
從可用元素的數量不容易處理的意義上講,這是否會以「動態」形式結束?如果不是這種情況,爲什麼不從元素中查找你所包含的值? – jett
我不確定你的意思。函數中的'regex'取決於某個特定的字段,但它所依賴的可能值是有限的。我真的很想將這些信息作爲參數或其他東西傳遞,否則表單會有某種「魔法ID」,其中一個驗證依賴於其中。這對於一個表單來說是可以的,但是如果你重新使用這個函數,那麼強制使用某個特定名稱的元素是非常棘手的,所以驗證是有效的。或者你知道解決方法嗎? – Nanne
我腦海中想到的是一個結構,它包含着要處理的元素。這可以通過一個簡單的表格填充這些數據來處理。實際上,只需要編寫一個'addVFormLookup(e_form,e1,e2) '爲你需要的每個表單元素。然後只需要一個函數來從中找到正確的元素。 – jett