JQuery validation-select required if checkbox checked

你说的曾经没有我的故事 提交于 2019-12-17 15:37:43

问题


using jquery I want to make a selection from a select box required (ie it can't be left as the blank default) if a particular checkbox is ticked. My code:

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

The 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>

Not only is the code not working it's throwing out the jquery tabs that I have as the next section of javascript.

Any advice appreciated.

Edit: Now that I've sorted out all my brackets the behaviour now is that it's making the select box a required field whether or not the checkbox is checked - ie the depends part is not working. Other javascript on the page is now working ok.


回答1:


Please try like this

$(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;
                     }  
                  }  
               }
           }
  });
});  



回答2:


it should be able to work just like that:

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



回答3:


This works like a charm

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

You can edit the inputname to yours prefered.

To change it to input field, you can change the select part to input




回答4:


I don't know what plugin you are using, but

 return $("#myCheckbox:checked")

returns a Jquery object if your checkbox is checked. I think it would be more correct to do:

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

which returns true or false.

Maybe this has nothing to to with your problem



来源:https://stackoverflow.com/questions/6573487/jquery-validation-select-required-if-checkbox-checked

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!