簡體   English   中英

具有Depends和Param屬性的Jquery自定義規則驗證

[英]Jquery Custom Rules Validation with Depends and Param Properties

所以我有一個HTML下拉框,其中包含4個值A,B,C和D。還有4個預填充文本框(P1,P2,P3,P4),其中包含一些文本,以及4個空白文本框(B1,B2) ,B3和B4)。

我希望根據在下拉框中選擇的值來應用驗證。

如果下拉值為A,我只想檢查空白文本框B1中的值是否不等於預填充文本框P1中的值,並且B1也不能保留為空白。

與B-> P2.val!= B2.val的下拉框值相同,並且B2不應為空。 其他也一樣。

我想出了一種用於One文本框的方法,但由於某種原因它無法正常工作,不確定是什么問題。 希望能解決我的問題。

以下代碼段的預期結果是,當dropdownbox中包含值A時,才應該繼續檢查兩個文本框中(即P1和B1)中的值是否相同。 !!

的HTML

<form>
    <select class="inlineEdit" name="Dropdownbox" id="Dropdownbox">
    <option value="A">
        A
    </option><option value="B">
        B
    </option><option value="C">
        C
    </option><option value="D">
        D
    </option>
</select>
    <br/><br/>
    <input type="text"  name="P1" value="Old Value" />
    <br/><br/>
    <input type="text"  name="B1" />
    <button type="submit">Test</button>
</form>​​​​​​​​​​​

jQuery查詢

jQuery.validator.addMethod("change", function(value, element, param) {
alert(param + " " + value);
    return this.optional(element) || value != param;
}, jQuery.format("You must enter {0}"));


$("form").validate({
    rules: {
        B1: {
            required: function(element) {
                return $("#Dropdownbox").val() == "A";
            },
            change: {
                param: $("#P1").val(),
                depends: function(element) {
                    return $("#Dropdownbox").val() == "A";
                }
            }
        }
    },

    debug: true
});​

........

您可以嘗試在此處運行以上代碼: http : //jsfiddle.net/

問題是$(“#P1”)。val發送的是true,而不是param中的實際值,這就是為什么它不起作用。 如果我將參數中的值硬編碼,則代碼可以正常工作。 任何解決方案

謝謝,

一些想法:

可能是您缺少P1前面的#號。 如果您試圖將P1標識為名稱,則需要$('[name="P1"]') 對於捕獲這樣的問題,如果可以包含實際代碼,而不是放入默認字符串,則將很有幫助。 同樣,您似乎在按名稱標識B1。 如果是id或class之類的東西,那將是您的問題。 由於這樣的原因,擁有包含相關HTML的代碼示例也可能會有所幫助。

除此之外, 看到了什么影響? 當回答這樣的問題時,既有預期的結果又有實際的結果通常是有幫助的。

考慮到您對語義的關注,答案不外乎是一個建議,我傾向於將所有邏輯保留在jQuery.Validator.addMethod調用中,因為它有助於使語義更簡單,並且所有這些在同一個地方。 我本人看不出您的語義有什么問題。

編輯:是的。 就像我想的那樣。 您正在使用$("#P1") 這將為您提供ID為“ P1”的節點。 為了使用JQuery來獲取名稱,您需要使用$('[name="P1"]') 或者,您可以設置HTML,以便適當的標記具有與其名稱匹配的ID(就像對Dropdownbox所做的那樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM