2015-09-23 17 views
9

Vorrei impostare esplicitamente un pulsante come abilitato nel file html. Il motivo è che il mio codice in seguito attiva o disattiva il pulsante e se il codice si arresta in modo anomalo, potrei vedere il pulsante disabilitato.Imposta esplicitamente disabilitato = "false" nell'HTML non funziona

posso disattivare il pulsante con

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

ma poi un html contenente:

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

mostra ancora il pulsante come disabilitato. L'ispettore mostra:

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

So che posso fare

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

o simili, ma non è conveniente di farlo per molti elementi nel codice HTML.

+1

_ "ma non è conveniente farlo per molti elementi in html" _ ... perché? – Xufox

risposta

19

HTML non utilizza valori booleani per gli attributi booleani, sorprendentemente.

In HTML, gli attributi booleani vengono specificati aggiungendo semplicemente il nome dell'attributo o (in particolare in XHTML) utilizzando il nome dell'attributo come valore.

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

questo è documentato nella specifica HTML: http://www.w3.org/TR/html5/infrastructure.html#boolean-attribute

una serie di attributi sono attributi booleani. La presenza di un attributo booleano su un elemento rappresenta il valore vero e l'assenza dell'attributo rappresenta il valore falso.

I valori "true" e "false" non sono consentiti sugli attributi booleani. Per rappresentare un valore falso, l'attributo deve essere omesso del tutto.

+0

Grazie per l'informazione. Tuttavia, omettere i disabili non significa mettere fuori disabilità (che è ciò di cui ho bisogno). Ho appena disabilitato un elemento su www.google.com e ho ricaricato la pagina. Questo elemento è ancora disabilitato – aless80

+0

@ aless80 Un elemento non deve rimanere disattivato dopo aver ricaricato la pagina.Che cosa stai facendo, esattamente? – Dai

+0

Ti do uno scenario. Sto usando Firefox. 1) Dite che la mia pagina web interrompe l'esecuzione (a causa di un bug, perché eseguo il debug o perché aggiorno la pagina) mentre il pulsante è disabilitato. Quando aggiorno la pagina (non un aggiornamento difficile!) Il pulsante sarà disabilitato. Per questo motivo, vorrei disattivare disattivato in html. Mi dispiace, trascuro quello che ho scritto sopra su google.com. – aless80

3

Se si utilizza angolare, provare ng-disabled invece. In questo caso è possibile utilizzare cose come:

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

e funziona come previsto ...

+0

Sempre buono da ricordare! – coderade

2

So che questo è un argomento vecchio, ma come non c'è una risposta marcata, fa questo aiuto? Questo risponde alla domanda esplicitamente contrassegnata come abilitata.

Anche io sto indagando su questo per abilitare un pulsante quando si verifica la convalida. Spero che questo aiuti qualcuno.

+0

Sì, il mio post è piuttosto vecchio e non riesco più a riprodurre il problema (ottenendo un pulsante disabilitato a causa, ad esempio, di un arresto anomalo del codice). Sei sicuro di aver trovato un esempio quando il pulsante è disabilitato quando accendi la pagina e l'aggiunta attivata lo abilita? – aless80

+0

In realtà non l'ho provato con entrambi i tag. È interessante notare che se il tag disabilitato è incluso, abilitato non lo abilita. Sembra che la priorità vada allo stato disabilitato. Ovviamente, tuttavia, (nessuna idea sul problema del codice originale, ovviamente), sarebbe programmaticamente possibile impostare abilitato o disabilitato su una singola variabile. ad esempio '

2

In futuro, può aiutare qualcuno.

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