2010-10-20 186 views
18

Huy Guys,jquery驗證依賴字段

我試圖使用jQuery驗證插件並指定只有當其他字段爲空(未填充)時,才需要一個字段。

事情是,規則正在工作,但它仍然需要該領域,即使我輸入的價值。

謝謝。

這是我的代碼:

$("#ProspectDtlFrm").validate({ 
rules: { 

    prsptEmail: { 
    required: function(element) { return ($("#prsptHomePhone").val() == '' && $("#prsptBusinessPhone").val() == '' && $("#prsptMobilePhone").val() =='') }           
    }  
}, 
messages: { 
     prsptEmail: "Please enter your first name" 
} 
}); 

回答

35

你可以使用depends

$('#ProspectDtlFrm').validate({ 
    rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element) { 
        return ($('#prsptHomePhone').val() == '' && 
          $('#prsptBusinessPhone').val() == '' && 
          $('#prsptMobilePhone').val() == ''); 
       } 
      } 
     }  
    }, 
    messages: { 
     prsptEmail: 'Please enter your first name' 
    } 
}); 
+0

嗨,它仍然這樣做。當我在該領域輸入數值時,它仍然需要。 – cesar 2010-10-20 08:35:41

+0

讓我給你更多的細節,我想要做什麼。我有4個字段,用戶應至少在其中一個字段中輸入值。所以我試圖驗證這4個字段中的每一個都是必需的,只要它們都是空的,否則就不需要。 – cesar 2010-10-20 08:39:24

+0

嗨達林,它工作時,我鍵入的東西到prsptHomePhone,prsptBusinessPhone或prsptMobilePhone,但當我輸入的東西到字段電子郵件它仍然是必需的。 – cesar 2010-10-20 22:45:16

5

「依賴」好像它不支持任何更多,而且,他們的文檔是不是最新的。

所以在場景中,如果「是」複選框被選中,驗證另一個領域:

rules:{ 
    'name value of area you want to validate':{ 
     required: '#tickBoxId:checked' 
    } 
} 
7

depends條款仍然支持。這是從1.11.0pre版本:

normalizeRules: function(rules, element) { 
    // handle dependency check 
    $.each(rules, function(prop, val) { 
    // ignore rule when param is explicitly false, eg. required:false 
    if (val === false) { 
     delete rules[prop]; 
     return; 
    } 
    if (val.param || val.depends) { 
     var keepRule = true; 
     switch (typeof val.depends) { 
     case "string": 
      keepRule = !!$(val.depends, element.form).length; 
      break; 
     case "function": 
      keepRule = val.depends.call(element, element); 
      break; 
     } 
     if (keepRule) { 
     rules[prop] = val.param !== undefined ? val.param : true; 
     } else { 
     delete rules[prop]; 
     } 
    } 
    }); 

正如你所看到的,你可以選擇「字符串」和「功能」之間。所以,你可以使用:

rules: { 
    input_name_here: { 
    required: { 
     depends: function(element) { 
     return $("#thickBoxId:checked").length; 
     //or whatever you need to check 
     } 
    } 
    } 
} 

或者

rules:{ 
    input_name_here:{ 
    required: '#tickBoxId:checked' 
    } 
} 

如果你只需要測試的東西檢查存在。

+0

對不起,我的編輯不好 – 2013-09-26 22:57:45

1

的方式是depends它的工作。

rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element){ 
        if ($('#id-user').val() == '') { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     }, 
    }, 
    messages: { 
     prsptEmail : { 
      required : "please signIn!", 
     } 
    },