2014-11-19 24 views
5

Sehen Sie sich diese beiden Fideln in Firefox oder Chrome an. In this eins, ich habe nur ein einfaches Formular mit einem required Attribut und einem submit Knopf. Drücken Sie "Senden", wenn das Feld leer ist, wird es als invalid formatiert (in Firefox ist es eine rote Umrandung). Aber es wartet, bis Sie auf "Senden" klicken, um zu zeigen, dass es ungültig ist.Eingabe: Ungültige CSS-Regel wird beim Laden der Seite angewendet

Jetzt versuchen this eins. Es ist identisch, mit der Ausnahme, dass es einige CSS:

input:invalid{ 
    border-color:orange 
} 

Außer dieser Zeit die orangefarbene Randfarbe aufgetragen wird sogar vor einreichen gedrückt wird. Wenn Sie also nur einen invalid Stil für ein Formular manuell festlegen, wendet der Browser es vorher an, was nicht intuitives Verhalten ist. Natürlich ist ein Pflichtfeld ungültig, bevor Sie etwas eingeben.

Gibt es eine Möglichkeit, das zu beheben?

+0

Laut den [MDN Docs] (https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid#HTML_Content) für die Pseudoklasse ': invalid' scheint es so zu sein Arbeiten wie die Spezifikation umreißt es um zu arbeiten. – War10ck

Antwort

2

Hier ist, was Sie suchen: http://jsfiddle.net/CaseyRule/16fuhf6r/2/

Stil es wie folgt aus:

form.submitted input:invalid{ 
    border-color:orange 
} 

Und dann fügen Sie diese js:

$('input[type="submit"]').click(function(){ 
    $('form').addClass('submitted'); 
}); 

Ich glaube nicht, es ist ein Weg, dies noch ohne Javascript zu erreichen.

-2

Vielleicht funktioniert:

input:invalid{ 
    border-color:orange !important; 
} 

Dadurch werden alle anderen -grenzfarben dem Eingang zugewiesen überschreiben, wenn es ungültig ist.

+0

Leider beantwortet dies die Frage des OP nicht. Die Frage ist, warum das CSS angewendet wird *** bevor *** das Formular eingereicht wird, nachdem das Formular abgeschickt wurde. In diesem Fall gibt es kein Vorrangproblem. Das CSS wird korrekt geladen. – War10ck

1

In Firefox können Sie:

:-moz-ui-invalid:not(output) 

Dies ist die Pseudo-Klasse vom Browser hinzugefügt, um den roten Schein zu geben. Es wird nicht beim Laden der Seite hinzugefügt oder alle Eingaben würden dieses Leuchten haben. Ich habe das Äquivalent in anderen Browsern nicht gefunden.