2011-07-04 27 views
26

using jquery Quiero hacer una selección de un cuadro de selección requerido (es decir, no se puede dejar como el valor predeterminado en blanco) si está marcada una casilla de verificación en particular. Mi código:JQuery validation-select required if checkbox checked

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

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

No sólo es el código no trabaja está lanzando las pestañas jQuery que tengo como la siguiente sección de JavaScript.

Cualquier consejo apreciado.

Editar: Ahora que he resuelto todos mis corchetes, el comportamiento ahora es que hace que el cuadro de selección sea un campo obligatorio independientemente de que la casilla de verificación esté marcada, es decir, la parte de los que dependen no funciona. Otro javascript en la página ahora está funcionando bien.

+0

Qué plug-in está usando? – dotty

+0

Lo siento, estoy usando jquery.validate.min.js –

Respuesta

27

Por favor, intente como esto

$(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

Hola, gracias, pero eso todavía hace que el menú desplegable sea obligatorio ya sea que marque o no la casilla de verificación. –

+0

edité el código. Mírelo. agregó un ** return false ** en la condición else –

+0

Eso fue lo que hizo - genial, muchas gracias. –

0

No sé qué plugin que está utilizando, pero

return $("#myCheckbox:checked") 

devuelve un objeto jQuery si se comprueba su casilla de verificación. Creo que sería más correcto hacer:

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

que devuelve verdadero o falso.

Tal vez esto no tiene nada que con a su problema

+0

El código se basa en el segundo ejemplo de 'reglas' aquí: http://docs.jquery.com/Plugins/Validation/validate#toptions –

+0

Gracias, pero cambiando la línea que sugiere no permite que se realice ninguna selección cuando se marca la casilla de verificación. –

8

Esto funciona como un encanto

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

Puede editar inputName al suyo preferido.

para cambiarlo a campo de entrada, puede cambiar la parte de selección a la entrada

+1

Eso se puede comprimir a 'required: function() {return $ (" select [name = inputname] "). Val() == 1; } ' – quickshiftin

+0

O más bien:' required: function() {return $ ("# elementID"). Val() === 1; } ' –

+1

Según la documentación (http://jqueryvalidation.org/category/methods/#example:-makes-details-required-only-if-#other-is-checked), el método adecuado para usar es' rules: { myDropDown: obligatorio: {"# myCheckbox: checked"}} ' – gillytech

28

que debería ser capaz de trabajar al igual que:

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

Esto funciona, y es el método estándar según la documentación: http://jqueryvalidation.org/category/methods/#example:-makes-details-required- only-if- # other-is-checked – gillytech

+0

esta es la respuesta más simple, y por lo tanto la mejor manera. – JGilmartin

+0

Funciona y es el mejor método ... – WalkerNuss

Cuestiones relacionadas