2012-05-21 15 views
8

geprüft Ich habe folgendes Kontrollkästchen:JQuery Validierung-Eingabetextfeld erforderlich, wenn Checkbox

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

und das folgende Eingabetextfeld:

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

Das ist mein js Validierungscode:

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

Ich möchte das MimeType-Eingabetextfeld nur benötigt werden, wenn das Kontrollkästchen aktiviert ist. Aus irgendeinem Grund funktioniert das Obige nicht. Ich bin ziemlich neu in Javascript und jquery. Jede Hilfe mit Arbeitsbeispiel wird sehr geschätzt. Danke!

Antwort

9

Sie können Ihre eigenen Validierungsmethoden hinzufügen Dinge wie diese zu behandeln:

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

Ich habe Ihren Code ausprobiert. Es gibt mir die folgende Fehlermeldung: „Erwartet:“ für diese Linie: mime: {} requiredIfChecked Können Sie bitte das Beispiel in Fiddle geben? – Mdb

+0

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

+0

Danke! Das Problem war, dass ich die Validierungen auf $ (Dokument) .ready anwende und der Wert des Kontrollkästchens immer falsch ist. Jetzt verwende ich die Validierungen nach dem Aufruf von ko.applyBindings und es funktioniert wie erwartet. Wie auch immer, danke für deine Hilfe. – Mdb

2

Die Validierung wird nicht triger, wenn der Eingang disabled ist. Sie könnten diese Tatsache verwenden - lassen Sie Textfeld erforderlich, aber zunächst deaktiviert, und aktivieren Sie es nur, wenn Kontrollkästchen aktiviert ist.

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

Ich habe nicht die #mimeType Eingang deaktiviert. – Mdb