2012-05-21 23 views
8

tengo la siguiente casilla:JQuery a ser necesaria si la casilla de verificación comprueba

<input type="checkbox" id="startClientFromWeb" name="startClientFromWeb" data-bind="checked: StartClientFromWeb" /> 

y el siguiente campo de texto de entrada:

<input id="mimeType" name="mimeType" data-bind= "value: MimeType" /> 

Este es mi js código de validación:

$("#franchiseForm").validate({ 
      rules: { 
       mimeType: { 
        required: $("#startClientFromWeb").is(":checked") 
       } 
      } 
     }); 

Quiero que el campo de texto de entrada mimeType sea obligatorio solo si la casilla de verificación está marcada. Por alguna razón, lo anterior no está funcionando. Soy bastante nuevo en javascript y jquery. Cualquier ayuda con el ejemplo de trabajo será muy apreciada. ¡Gracias!

Respuesta

9

Puede añadir sus propios métodos de validación personalizada para controlar cosas como esta:

$.validator.addMethod("requiredIfChecked", function (val, ele, arg) { 
    if ($("#startClientFromWeb").is(":checked") && ($.trim(val) == '')) { return false; } 
    return true; 
}, "This field is required if startClientFromWeb is checked..."); 


$("#franchiseForm").validate({ 
     rules: { 
      mimeType: { requiredIfChecked: true } 
     } 
}); 
+0

Probé tu código. Me da el siguiente error: "prevista:" para esta línea: mimeType: {} requiredIfChecked Puede por favor dar el ejemplo en el violín? – Mdb

+0

'{requiredIfChecked: true}' Lo siento ... – ShaneBlake

+0

¡Gracias! El problema es que estoy aplicando las validaciones en $ (documento). Listo y el valor de la casilla de verificación siempre es falso. Ahora aplico las validaciones después de que ko.applyBindings llame y funciona como se esperaba. De todos modos, gracias por tu ayuda. – Mdb

2

La validación no se iniciará si la entrada es disabled. Podría usar ese hecho: deje que se requiera el cuadro de texto, pero inicialmente deshabilitado, y habilítelo solo cuando la casilla de verificación esté marcada.

$(function() { 
    $('#startClientFromWeb').change(function() { 
     if ($(this).is(':checked')) { 
      $('#mimeType').removeAttr('disabled');     
     } 
     else { 
      $('#mimeType').attr('disabled', 'disabled'); 
     } 
    }); 
}); 
+0

no he desactivado la entrada #mimeType. – Mdb

Cuestiones relacionadas