2015-09-23 7 views
9

Ich möchte explizit eine Schaltfläche als aktiviert in der HTML-Datei. Der Grund ist, dass mein Code später den Button deaktiviert und wenn der Code abstürzt oder ich die Schaltfläche deaktiviert sehe.Explizit gesetzt disabled = "false" im HTML funktioniert nicht

kann ich den Knopf mit

$("#btn").attr("disabled","true") 

deaktivieren, aber dann ein HTML enthält:

<button id="btn" disabled="false">I want to be enabled!</button> 

zeigt noch die Taste als deaktiviert. Der Inspektor zeigt:

<button id="btn" disabled="">I want to be enabled!</button> 

Ich weiß, ich

$("#btn").removeAttr("disabled") 

oder ähnliches tun, aber es ist nicht gut, dass für viele Elemente in dem HTML-Code zu tun.

+1

_ "aber es ist nicht bequem, das für viele Elemente im HTML zu tun" _ ... warum? – Xufox

Antwort

19

HTML verwendet überraschenderweise keine booleschen Werte für boolesche Attribute.

In HTML werden boolesche Attribute angegeben, indem entweder nur der Attributname oder (insbesondere in XHTML) der Attributname als Wert verwendet wird.

<input type="checkbox" disabled>     <!-- HTML --> 
<input type="checkbox" disabled />    <!-- Also HTML --> 
<input type="checkbox" disabled="disabled" /> <!-- XHTML and HTML --> 

Dies wird in der HTML-Spezifikation dokumentiert: http://www.w3.org/TR/html5/infrastructure.html#boolean-attribute

Eine Reihe von Attributen boolean Attribute sind. Das Vorhandensein eines booleschen Attributs für ein Element stellt den wahren Wert dar, und das Fehlen des Attributs stellt den falschen Wert dar.

Die Werte "true" und "false" sind bei booleschen Attributen nicht erlaubt. Um einen falschen Wert darzustellen, muss das Attribut vollständig weggelassen werden.

+0

Danke für die Information. Das Deaktivieren von deaktiviert bedeutet jedoch nicht, deaktiviert zu deaktivieren (was ich brauche). Ich habe nur ein Element auf www.google.com deaktiviert und die Seite neu geladen. Dieses Element ist immer noch deaktiviert. – aless80

+0

@ aless80 Ein Element sollte nach dem erneuten Laden der Seite nicht deaktiviert bleiben.Was machst du genau? – Dai

+0

Ich gebe dir ein Szenario. Ich benutze Firefox. 1) Sagen Sie, dass meine Webseite die Ausführung anhält (wegen eines Fehlers, weil ich debugge oder weil ich die Seite aktualisiere), während die Schaltfläche deaktiviert ist. Wenn ich die Seite aktualisiere (keine Hard Refresh!), Wird die Schaltfläche deaktiviert. Aus diesem Grund möchte ich deaktivieren deaktiviert in der HTML. Entschuldigung, vernachlässige, was ich oben über google.com geschrieben habe. – aless80

3

Wenn Sie Angularng-disabled stattdessen verwenden, versuchen. In diesem Fall können Sie solche Sachen verwenden:

ng-disabled="true" 
ng-disabled="false" 
ng-disabled={{expression}} 

und es funktioniert wie erwartet ...

+0

Immer gut zu merken! – coderade

2

Ich weiß, dies ist ein altes Thema, aber da es keine deutliche Antwort ist, tut diese Hilfe? Dies beantwortet die explizit als aktivierte Frage.

Auch ich untersuche dies für die Verwendung einer Schaltfläche aktiviert, wenn Validierung stattfindet. Ich hoffe, das hilft jemandem.

+0

Ja, mein Beitrag ist ziemlich alt und ich kann das Problem nicht mehr reproduzieren (zB wegen eines Code-Absturzes). Sind Sie sicher, dass Sie ein Beispiel gefunden haben, als die Schaltfläche beim Starten der Seite deaktiviert wurde und das Hinzufügen aktiviert ist? – aless80

+0

Ich habe es nicht wirklich mit beiden Tags getestet. Interessanterweise, wenn das Tag deaktiviert ist, aktiviert es nicht aktiviert. Es sieht so aus, als würde die Priorität in den deaktivierten Zustand gehen. Offensichtlich jedoch (keine Ahnung, wie Ihr ursprüngliches Code-Problem natürlich aussah), wäre es programmatisch möglich, eine einzelne Variable zu aktivieren oder zu deaktivieren. zB '

2

In Zukunft kann jemand helfen.

selectLanguage.onchange = function() 
    { 
     var value = selectLanguage.value; 
     if (value != '') { 
      submitLanguage.removeAttribute('disabled'); 
     } else { 
      submitLanguage.setAttribute('disabled', 'disabled'); 
     } 
     // submitLanguage.setAttribute('enabled', 'enabled'); 
    } 
Verwandte Themen