2011-07-04 113 views
26

使用jquery如果勾選了某個複選框,我想從所需的選擇框中進行選擇(即,不能將其保留爲空白默認值)。我的代碼:JQuery驗證 - 如果選中複選框,則需要選擇

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
     myDropDown: { 
     required: {  
      depends: function(element) { 
      return $("#myCheckbox:checked") 
      } 
     } 
     } 
    } 
    }) 
}) 

的HTML:

<input type="checkbox" name="myCheckbox" id="myCheckbox" value="1"> 
<select name="myDropDown" id="myDropDown"> 
    <option value="" selected></option> 
    <option value="1">Choice 1</option> 
    <option value="2">Choice 2</option> 
    <option value="3">Choice 3</option> 
</select> 

不僅不能正常工作的代碼它拋出了jQuery的選項卡,我有作爲的JavaScript下一節。

任何意見讚賞。

編輯:現在我已經整理了所有的括號,現在的行爲是它將選擇框設置爲必填字段,而不管複選框是否被選中 - 即依賴部分不起作用。網頁上的其他JavaScript現在可以正常工作。

+0

您正在使用什麼插件? – dotty

+0

對不起,我正在使用jquery.validate.min.js –

回答

27

請嘗試這樣

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
       myDropDown:{ 
        required: function (element) { 
        if($("#myCheckbox").is(':checked')){ 
         var e = document.getElementById("myDropDown"); 
         return e.options[e.selectedIndex].value=="" ;        
        } 
        else 
        { 
         return false; 
        } 
        } 
       } 
      } 
    }); 
}); 
+0

嗨,謝謝,但仍然使下拉菜單是否需要檢查複選框。 –

+0

我編輯了代碼..請檢查它。在其他情況下添加了**返回false ** –

+0

這樣做訣竅 - 很好,非常感謝。 –

0

我不知道你用的是什麼插件,但

return $("#myCheckbox:checked") 

如果你的複選框被選中返回一個jQuery對象。我認爲這樣做會更正確:

return $("#myCheckbox").is(':checked') 

它返回true或false。

也許這無關,與你的問題

+0

代碼基於這裏的第二個「規則」示例:http://docs.jquery.com/Plugins/Validation/validate#toptions –

+0

謝謝,但改變您建議的行允許在複選框被選中時不進行選擇。 –

8

這就像一個魅力

inputname: 
{ 
    required: function(){ 
     if($("select[name=inputname]").val() == 1){ 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

您可以編輯inputname到你優先。

把它改成輸入字段,您可以更改選擇部分輸入

+1

這可以壓縮到'required:function(){return $(「select [name = inputname]」)。val()== 1; }' – quickshiftin

+0

或者:'required:function(){return $(「#elementID」)。val()=== 1; }' –

+1

根據文檔(http://jqueryvalidation.org/category/methods/#example:-makes-details-required-only-if-#other-is-checked),正確的使用方法是'rules:{ myDropDown:required:{「#myCheckbox:checked」}}' – gillytech

28

它應該能夠工作就像是:

rules : { 
myDropDown:{required:"#myCheckbox:checked"} 
} 
+1

這是行得通的,並且是每個文檔的標準方法:http://jqueryvalidation.org/category/methods/#example:-makes-details-required- only-if-#other-is-checked – gillytech

+0

這是最簡單的答案,因此是更好的方法。 – JGilmartin

+0

它的作品,它是最好的方法... – WalkerNuss