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:

Wie setze ich das HTML5-Attribut in Javascript?

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?

jsFiddle

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.

Kommentar zu dem Problem
Ich verstehe nicht, warum Sie nicht zulassen, dass 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... Kommentarautor: Christophe Roussy
Ist es möglich, manuell zeigen, dass text über die erforderliche Eingabe: "Bitte füllen Sie dieses Feld aus."? Kommentarautor: zygimantus

InformationsquelleAutor der Frage Ian Boyd | 2013-09-12

Schreibe einen Kommentar