2009-08-31 7 views
134

Questo è quello che ho trovato da fireBug in firefox.i valori degli ingressi disabilitati non verranno inviati?

È lo stesso negli altri browser?

Se sì, qual è la ragione di questo?

+17

È possibile impostare un attributo 'readonly'. Ad esempio, Chrome lo rende come campo disattivato ma lo invia. – peterrus

+4

Possibile duplicato di [Input modulo disattivato non visualizzato nella richiesta] (http://stackoverflow.com/questions/7357256/disabled-form-inputs-do-not-appear-in-the-request) – hazzik

risposta

129

Sì, tutti i browser non non devono inviare gli input disabilitati, in quanto sono di sola lettura.

More info (sezione 17.12.1)

Abilità Definizione

disabili [CI] Quando impostato per un controllo di modulo, questo attributo booleano disabilita il controllo di input dell'utente. Quando impostato, l'attributo disabilitato ha i seguenti effetti su un elemento:

  • I controlli disattivati ​​non ricevono lo stato attivo.
  • I controlli disabilitati vengono saltati in navigazione con linguette.
  • I controlli disabilitati non possono avere esito positivo.

i seguenti elementi supportano l'attributo disabled: BUTTON, INPUT, OPTGROUP, opzione, selezionare, e TEXTAREA.

Questo attributo è ereditato ma le dichiarazioni locali hanno la priorità sul valore ereditato .

Il rendering degli elementi disabilitati dipende dal programma utente. Ad esempio, alcuni agenti utente "grigio out" voci di menu disabili, pulsante etichette, ecc

In questo esempio, l'elemento INPUT è disattivato. Pertanto, non può ricevere input dell'utente né il suo valore verrà inviato con il modulo.

<INPUT disabled name="fred" value="stone"> 

Nota. L'unico modo per modificare dinamicamente il valore dell'attributo disabilitato è attraverso uno script.

+59

Soluzione alternativa: aggiungere un elemento '' con lo stesso nome/valore dell'input disabilitato. –

+0

qualsiasi informazione su quale browser fa e quale non obbedisce? – Allisone

+2

@JohnKugelman buona idea, ma assicurati di non aggiungere accidentalmente l'attributo disabilitato anche a quelli nascosti. Ho fatto questo: $ ('# thingy'). Val (qualunque cosa) .not ('[type = hidden]'). Attr ('disabled', 'disabled') –

17

Non vengono inviati perché that's what it says in the W3C spec.

17.13.2 controlli di successo

Un controllo di successo è "valido" per la presentazione. [snip]

  • I controlli disabilitati non possono avere esito positivo.

In altre parole, le specifiche dice che i controlli che sono disabili sono considerati non validi e non devono essere presentati.

178

disabled input non invia dati.

utilizzare l'attributo readonly:

<input type="text" readonly /> 

Source here

+11

ma questo non funziona su tag selezionati! – shareef

+0

@shareef http://jsbin.com/diloha/1/ Che ne dici di questo? –

+0

@FrankFang, Ok, ma, quando sto passando i dati al modello di lama del collettivo di Laravel. Non funzionerà. non è possibile inviare dati in questo modo. –

1

Disabled controlli non possono avere successo, e un controllo di successo è "valido" per la presentazione. Questo è il motivo per cui i controlli disabilitati non vengono inviati con il modulo.

Problemi correlati