Wie funktioniert ist-ungültig bootstrap-Klasse der Arbeit?
Habe ich eine Eingabe, die korrekt funktioniert: nach errror zurückgegeben wurde, vom server auf den client, sehe ich {{value}}
.
<div class="form-group">
<label class="col-md-8 control-label">Foo</label>
<input class="form-control" v-model="foo" :class="{' is-invalid': errors.foo}">
<div class="invalid-feedback" v-if="errors.foo">
<strong v-for="value in errors.foo">{{value}}</strong>
</div>
</div>
Also ich denke, div
mit class="invalid-feedback"
geht aus display: none
zu display: block
nur, wenn div
die class="invalid-feedback"
auf derselben DOM-Ebene mit <input class="form-control is-invalid">
.
<div>
<input class="form-control" :class="{' is-invalid': errors.foo}">
<div class="invalid-feedback" v-if="errors.foo">
<!-- this example would work -->
</div>
</div>
<div>
<input class="form-control" :class="{' is-invalid': errors.foo}">
</div>
<div>
<div class="invalid-feedback" v-if="errors.foo">
<!-- this example would not work
because error div isn't on the same DOM level with input -->
</div>
</div>
Bin ich im Recht? Nicht gefunden, was in docs über DOM.
Wenn ja, welche Abhilfe ist geeignet für den Fall, wenn ich möchte zeigen Fehler in div
mit class="invalid-feedback"
, aber "verbunden" - Eingang ist nicht auf derselben DOM-Ebene? Eigentlich will ich machen, mein 2. Beispiel Arbeit.
UPDATE: kann ich hinzufügen, einige <div class="form-control" :class="{' is-invalid': errors.foo}" style="display: none;">
auf derselben DOM-Ebene, wo <div class="invalid-feedback">
ist, aber es wäre spaghetti-code.
- Ich verstehe es nicht. Können Sie das klären, ist die Frage? Hast du Lesen Sie die überprüfung Abschnitt in der Dokumentation?
- Ich habe eine Vue-Komponente, mit der form. Es ist ein nicht-html-tag in form, die verwendet wird, für das Bilder freistellen. Tag machen einige
<canvas>
,<input>
und andere Elemente. Ich will den Fehler anzeigen, wenn Benutzer versucht, ein Formular Einreichen, ohne ein Bild angehängt. Ich habe versucht, hinzufügenclass="form-control" :class="{' is-invalid': errors.foo}"
auf meine Eingabe, aber Fehler in<div class="invalid-feedback" v-if="errors.foo">
nicht zeigen, trotzdem - JSFiddle
- Wenn es nicht zeigen, bis, was ist der Wert
errors.screenshot
? - es ist ein string. Aber trotzdem
div
mitinvalid-feedback
will nicht gehen "sichtbar". - Ich denke, das ist, wo ein Elternteil mit
.was-validated
notwendig ist. - Ich versuche im moment. Aber ich habe eine text-Eingabe in der Nähe, wie das und es funktioniert ohne Zugabe von
.was-validated
... - Du hast Recht, es ist ein Praktikum erforderlich, wenn die Platzierung der feedback-div. Ich aktualisiert meine Antwort mit weiteren Infos
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du mit
v-if="errors.foo"
auf dieinvalid-feedback
div, so wird es eingefügt in den DOM nur, wennerrors.foo
ist truthy, unabhängig davon, wo es in den DOM.Da für das styling:
Also die Platzierung der
.invalid-feedback
div ist wichtig bei Verwendung des Standard-Verhalten, die für das styling mit dem general sibling combinator~
Es ist ein
.was-validated
Klasse, die Sie hinzufügen sollten, auf ein übergeordnetes element, das anwenden der Fehler-styling ungültigen Elementen.Da muss es ein Allgemeinen Geschwister, die Sie zwingen könnte die
display: block
mitv-show
oder verwenden Sie benutzerdefinierte CSS wied-block
.Dies ist ein bekanntes problem mit
.input-group
diskutiert in einer Ausgabe.Wenn Sie feststellen, es beginnt zu schmutzig, können Sie bewerten die Möglichkeit, die Verpackung der Eingänge in Komponenten, die für Ihr styling und dann nur die Wiederverwendung Ihrer Komponenten.
Oder verwenden Sie eine Vue-wrapper bootstrap, wie bootstrap-vue.
d-block
zuinvalid-feedback
. Lassen Sie einfach diesen link für zukünftige Besucher. Machenhas-error
wieder großartig.