2010-10-20 1 views
18

Huy Jungs,JQuery Validate abhängt Feld

Ich versuche, jQuery Validierung Plugin zu verwenden und angeben, dass ein Feld nur erforderlich, wenn drei andere Felder leer sind (nicht ausgefüllt).

Die Sache ist, dass die Regel funktioniert, aber es bleibt immer noch das Feld erforderlich, auch wenn ich Wert darauf eingeben.

Danke.

Dies ist mein Code:

$("#ProspectDtlFrm").validate({ 
rules: { 

    prsptEmail: { 
    required: function(element) { return ($("#prsptHomePhone").val() == '' && $("#prsptBusinessPhone").val() == '' && $("#prsptMobilePhone").val() =='') }           
    }  
}, 
messages: { 
     prsptEmail: "Please enter your first name" 
} 
}); 

Antwort

35

Sie depends verwenden:

$('#ProspectDtlFrm').validate({ 
    rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element) { 
        return ($('#prsptHomePhone').val() == '' && 
          $('#prsptBusinessPhone').val() == '' && 
          $('#prsptMobilePhone').val() == ''); 
       } 
      } 
     }  
    }, 
    messages: { 
     prsptEmail: 'Please enter your first name' 
    } 
}); 
+0

Hallo, es bleibt das gleiche tun. Wenn ich Werte in das Feld eingabe, wird es immer noch benötigt. – cesar

+0

Lassen Sie mich Ihnen mehr Details darüber geben, was ich zu tun versuche. Ich habe 4 Felder, wo der Benutzer Werte in mindestens einem von ihnen eingeben sollte. Also versuche ich zu bestätigen, dass jedes dieser 4 Felder benötigt wird, nur wenn alle leer sind, sonst wird es nicht benötigt. – cesar

+0

Hallo Darin, es funktioniert, wenn ich etwas in prsptHomePhone, prsptBusinessPhone oder prspTMobilePhone eintippe, aber wenn ich etwas in das Feld E-Mail eintippe, ist es immer noch erforderlich. – cesar

5

'hängt' scheint, wie es nicht mehr unterstützt wird, und, ihre Dokumente nicht aktuell sind.

So in dem Szenario, in dem, wenn ein ‚Ja‘ ankreuzen aktiviert ist, ein anderes Feld validieren:

rules:{ 
    'name value of area you want to validate':{ 
     required: '#tickBoxId:checked' 
    } 
} 
7

Die depends Klausel noch unterstützt wird. Dies ist aus 1.11.0pre Version:

normalizeRules: function(rules, element) { 
    // handle dependency check 
    $.each(rules, function(prop, val) { 
    // ignore rule when param is explicitly false, eg. required:false 
    if (val === false) { 
     delete rules[prop]; 
     return; 
    } 
    if (val.param || val.depends) { 
     var keepRule = true; 
     switch (typeof val.depends) { 
     case "string": 
      keepRule = !!$(val.depends, element.form).length; 
      break; 
     case "function": 
      keepRule = val.depends.call(element, element); 
      break; 
     } 
     if (keepRule) { 
     rules[prop] = val.param !== undefined ? val.param : true; 
     } else { 
     delete rules[prop]; 
     } 
    } 
    }); 

Wie Sie sehen können, kann yo zwischen "string" wählen und "Funktion". So können Sie verwenden:

rules: { 
    input_name_here: { 
    required: { 
     depends: function(element) { 
     return $("#thickBoxId:checked").length; 
     //or whatever you need to check 
     } 
    } 
    } 
} 

Oder

rules:{ 
    input_name_here:{ 
    required: '#tickBoxId:checked' 
    } 
} 

Wenn Sie nur für die Existenz von etwas kontrolliert zu testen.

+0

Entschuldigung mein Edit war schlecht –

1

der weg ist depends es funktioniert.

rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element){ 
        if ($('#id-user').val() == '') { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     }, 
    }, 
    messages: { 
     prsptEmail : { 
      required : "please signIn!", 
     } 
    },