2012-05-21 16 views
8

Ho la seguente casella di controllo:JQuery campo di testo di convalida-input per essere richiesto se casella selezionata

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

e il seguente campo di inserimento testo:

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

Questo è il mio js codice di validazione:

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

Desidero che il campo di testo di input mimeType sia richiesto solo se la casella di controllo è selezionata. Per qualche motivo, quanto sopra non funziona. Sono abbastanza nuovo per javascript e jquery. Qualsiasi aiuto con l'esempio di lavoro sarà molto apprezzato. Grazie!

risposta

9

È possibile aggiungere i propri metodi di validazione personalizzato per gestire le cose in questo modo:

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

Ho provato il tuo codice. Mi dà il seguente errore: "previsto::" per questa linea: mimeType: {} requiredIfChecked ti invitiamo a dare l'esempio in Fiddle? – Mdb

+0

'{requiredIfChecked: true}' Scusa ... – ShaneBlake

+0

Grazie! Il problema era che sto applicando le convalide su $ (document) .ready e il valore della casella di controllo è sempre falso. Ora applico le convalide dopo la chiamata a ko.applyBindings e funziona come previsto. Comunque grazie per il tuo aiuto. – Mdb

2

La convalida non viene eseguita se l'input è disabled. È possibile utilizzare questo fatto: lasciare che sia richiesta la textbox, ma inizialmente disabilitata e abilitarla solo quando la casella di controllo è selezionata.

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

non ho disattivato l'ingresso #mimeType. – Mdb

Problemi correlati