Wie setze ich das HTML5-Attribut in Javascript?
Ich versuche, daneben eine text
input-box als erforderlich in Javascript.
<input id="edName" type="text" id="name">
Wenn das Feld ist zunächst gekennzeichnet als required
:
<form>
<input id="edName" type="text" id="name" required><br>
<input type="submit" value="Search">
</form>
wenn der Benutzer versucht, senden Sie eine Validierungs-Fehler:
Aber jetzt will ich um die required
- Attribut bei "Laufzeit", durch Javascript:
<form>
<input id="edName" type="text" id="name"><br>
<input type="submit" value="Search">
</form>
mit dem entsprechenden script:
//recommended W3C HTML5 syntax for boolean attributes
document.getElementById("edName").attributes["required"] = "";
Außer, wenn ich behaupte jetzt, es ist keine überprüfung, kein block.
Was ist der richtige Weg, um ein HTML5-Validierung boolean-Attribut?
Was ist der Wert des Attributs ist, das Sie bitten?
Die HTML5-Validierung - Attribut ist dokumentiert als
Boolean
:
4.10.7.3.4 Die
Attribut
Den
required
Attribut ist ein boolean-Attribut. Wenn angegeben, wird das element benötigt wird.
Es gibt viel Händeringen über das wie zu definieren, ein boolean
Attribut. Die HTML5-Spezifikation Hinweise:
Anwesenheit eines boolean-Attributs auf ein element repräsentiert den wahren Wert, und das fehlen des Attributs stellt die false-Wert.
Wenn das Attribut vorhanden ist, der Wert muss entweder einen leeren string oder einen Wert, der einem ASCII-groß-und Kleinschreibung für das Attribut der canonical name, der keine führende oder nachfolgende Leerzeichen.
Dies bedeutet, dass Sie können geben Sie einen required
boolean Attribut zwei verschiedene Möglichkeiten:
edName.attributes.required = ""; //the empty string
edName.attributes.required = "required"; //the attribute's canonical name
Aber was ist der Wert des Attributs wirklich?
Wenn man sich mein jsFiddle dieses problem, werden Sie feststellen, dass, wenn die required
Attribut ist definiert in der markup:
<input id="edName" type="text" id="name" required>
Dann der Wert des Attributs ist nicht der leere string, noch die kanonische name des Attributs:
edName.attributes.required = [object Attr]
Könnte zu einer Lösung führen.
required="false"
, haben Sie jemals eine Vorlage schreiben, bevor das schreiben der standard ? Bedingte Attribute sind in der Regel ein Schmerz, es ist einfacher, nur das boolean in der Attribut-Wert... InformationsquelleAutor der Frage Ian Boyd | 2013-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
required
ist ein reflektiert Eigenschaft (wieid
,name
,type
und wie), also:...wo
element
ist der eigentlicheinput
DOM-element, z.B.:(Nur der Vollständigkeit halber.)
Re:
Weil
required
im code ist ein Attribut-Objekt, kein string;attributes
ist einNamedNodeMap
deren Werte sindAttr
- Objekte. Um den Wert einer von Ihnen, Sie würden seinen Blick aufvalue
Eigenschaft. Aber für ein boolean-Attribut, der Wert ist nicht relevant; das Attribut ist entweder in der Karte anzeigen (true) oder nicht installiert (false) ist.Also, wenn
required
nicht reflektiert, Sie würde legen Sie es durch hinzufügen des Attributs:...was ist das äquivalent
element.required = true
. Sie würde es löschen, indem Sie es ganz:...was ist das äquivalent
element.required = false
.Aber wir haben nicht zu tun mit
required
, da es reflektiert.InformationsquelleAutor der Antwort T.J. Crowder
Kurze version
Lange Version
Einmal T. J. Crowder geschafft hinweisen reflektiert Eigenschaften, habe ich gelernt, dass folgende syntax ist falsch:
Du muss gehen durch
element.getAttribute
undelement.setAttribute
:Dies ist, weil das Attribut enthält tatsächlich eine Besondere HtmlAttribute Objekt:
Durch das setzen eines Attributs auf den Wert "true", werden Sie versehentlich die Einstellung einer String Objekt, sondern als die HtmlAttribute Objekt es erfordert:
Konzeptionell die richtige Idee (ausgedrückt in einer typisierten Sprache), ist:
Deshalb:
getAttribute(name)
setAttribute(name, value)
vorhanden. Sie tun die Arbeit, die auf die Zuweisung des Wertes zu der HtmlAttribute Objekt innerhalb.
Am Anfang dieser, einige attribute sind reflektiert. Dies bedeutet, dass Sie zugreifen können, die Sie mehr schön aus Javascript:
Was Sie nicht tun möchten, ist versehentlich benutzen Sie die
.attributes
Sammlung:Testfällen
Führte dies zu testen, um die Verwendung eines
required
Attribut, vergleichen Sie die zurückgegebenen Werte durch das Attribut und die Eigenschaft spiegelt sichErgebnisse:
Versuchen auf die
.attributes
Sammlung direkt falsch ist. Es gibt das Objekt, das Sie repräsentiert das DOM-Attribut:Dies erklärt, warum Sie sollten nie die Rede, um die
.attributes
direkt sammeln. Du bist nicht die Manipulation des Werte der Attribute, sondern die Objekte, welche die Attribute selbst.Wie erforderlich?
Was ist der richtige Weg, um
required
auf ein Attribut? Sie haben zwei Möglichkeiten, entweder das reflektierte Eigenschaft, oder durch das korrekte festlegen der attribute:Streng genommen, jeder andere Wert wird "set" - Attribut. Aber die definition von
Boolean
Attribute vorschreiben, und es sollte nur auf eine leere Zeichenfolge festgelegt""
zu zeigen wahr. Die folgenden Methoden alle arbeiten, um set dierequired
Boolean Attribut,aber nicht verwenden Sie:
Wir bereits gelernt, dass der Versuch, das Attribut direkt falsch ist:
Wie klar erforderlich?
Den trick, wenn Sie versuchen zu entfernen die
required
Attribut ist, dass es leicht versehentlich einschalten:Mit der unwirksamen Möglichkeiten:
Bei Verwendung des reflektierten
.required
- Eigenschaft, Sie können aber auch beliebige "falsey" Werte, um Sie auszuschalten, und truthy Werte, um es einzuschalten. Aber stecken Sie nur auf true und false für Klarheit.Wie überprüfen für
required
?Überprüfen Sie das Vorhandensein des Attributs durch die
.hasAttribute("required")
Methode:Können Sie auch überprüfen Sie es durch die Boolean reflektiert
.required
Eigenschaft:InformationsquelleAutor der Antwort Ian Boyd
Und die jquery version:
Ich weiß, es ist nicht die Frage, aber vielleicht hat jemand wird sich finden diese hilfreich 🙂
InformationsquelleAutor der Antwort vladCovaliov
Was wichtig ist, ist nicht das Attribut, sondern die Eigenschaft, und sein Wert ist ein boolescher Wert.
Können Sie es mit
InformationsquelleAutor der Antwort Denys Séguret
ausprobieren..
InformationsquelleAutor der Antwort Vijay