2016-10-02 4 views
1

Ich habe zwei Eingänge: der erste ist X-Datei-Upload. der zweite ist Y- eine Eingabe für eine URL.jQuery - Einfache Validierung für zwei Eingänge

Bisher habe ich einen Code, der prüft, ob Y gültig ist, dann entfernen Sie das für X erforderliche Attribut. Andernfalls möchte ich, dass das X erforderlich ist.

$(Y).blur(function(){ 
    if ($(this).is(':valid') == true) { 
     $(X).removeAttr('required') 
    } else if ($(this).is(':valid') == false) { 
     $(X).attr('required'); 
    } 
}); 

aus irgendeinem Grund funktioniert dieser Code, wenn die Eingabe Y gültig ist entfernt das Attribut. Aber nehmen wir an, der Benutzer bedauert und möchte Y leer lassen, da er das erforderliche Attribut für X nicht zurückgibt.

Versucht, die Erklärung so einfach und klar wie möglich zu halten. Wenn es ein Missverständnis gibt, werde ich versuchen, diese Frage zu bearbeiten und sie klarer zu machen.

Antwort

0

Der einfachste Weg ist:

$(Y).blur(function(){ 
if ($(this).is(':valid') == true && $(this).val() != '') { 
    $(X).removeAttr('required') 
} else if ($(this).is(':valid') == false || $(this).val() == '') { 
    $(X).attr('required'); 
} 

});

In diesem Fall, wenn der Benutzer den Inhalt entfernt, wird das erforderliche Attribut zurückgegeben (vergessen Sie nicht, Trim-Funktion hinzuzufügen, ich habe es nicht in der Probe verwendet).

Ich würde empfehlen, diese Logik in Validierungsfunktionen zu kapseln. Ich mag auch kein Unschärfeereignis (Usability ist schlecht), ich würde Onchange-Event für die Feldvalidierung empfehlen.