Questo è quello che ho trovato Firebug in Firefox.
È lo stesso in altri browser?
In tal caso, qual è la ragione di ciò?
Questo è quello che ho trovato Firebug in Firefox.
È lo stesso in altri browser?
In tal caso, qual è la ragione di ciò?
Risposte:
Sì, tutti i browser non devono inviare gli input disabilitati, poiché sono di sola lettura.
Ulteriori informazioni (sezione 17.12.1)
Definizioni degli attributi
disabled [CI] Se impostato per un controllo modulo, questo attributo booleano disabilita il controllo per l'input dell'utente. Se impostato, l'attributo disabilitato ha i seguenti effetti su un elemento:
- I controlli disabilitati non ricevono lo stato attivo.
- I controlli disabilitati vengono ignorati nella navigazione delle schede.
- I controlli disabilitati non possono avere successo.
I seguenti elementi supportano l'attributo disabilitato: BUTTON, INPUT, OPTGROUP, OPTION, SELECT e TEXTAREA.
Questo attributo è ereditato ma le dichiarazioni locali hanno la precedenza sul valore ereditato.
La modalità di rendering degli elementi disabilitati dipende dal programma utente. Ad esempio, alcuni agenti utente "disattivano" le voci di menu disabilitate, le etichette dei pulsanti, ecc.
In questo esempio, l'elemento INPUT è disabilitato. 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 è tramite uno script.
<input type="hidden">
elemento con lo stesso nome / valore dell'input disabilitato.
disabled
l'input non invierà i dati.
Usa l' readonly
attributo:
<input type="text" readonly />
readonly
funziona, assicurati solo di passare "name" attr all'input.
Puoi usare tre cose per imitare i disabili:
HTML: readonly
attributo (in modo che il valore presente nell'input possa essere utilizzato all'invio del modulo. Inoltre l'utente non può modificare il valore di input)
CSS: 'pointer-events':'none'
(impedendo all'utente di fare clic sull'input)
HTML: tabindex="-1"
(bloccando l'utente per navigare verso l'input dalla tastiera)
Non vengono inviati, perché è quello che dice nelle specifiche del W3C .
17.13.2 Controlli riusciti
Un controllo riuscito è "valido" per l'invio. [Omissis]
- I controlli disabilitati non possono avere esito positivo.
In altre parole, la specifica afferma che i controlli disabilitati sono considerati non validi e non devono essere inviati.
Disabled
i controlli non possono avere esito positivo e un controllo riuscito è "valido" per l'invio. Questo è il motivo per cui i controlli disabilitati non vengono inviati con il modulo.
Esistono due attributi, vale a dire readonly
e disabled
, che possono fornire un input di sola lettura. Ma c'è una piccola differenza tra loro.
<input type="text" readonly />
<input type="text" disabled />
readonly
attributo rende il testo di input disabilitato e gli utenti non possono più modificarlo.disabled
attributo non solo renderà il tuo testo di input disabilitato (immutabile), ma non potrà nemmeno essere inviato .Approccio jQuery (1):
$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);
Approccio jQuery (2):
$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");
Approccio JavaScript:
document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;
PS disabled
e readonly
sono attributi html standard. prop
introdotto con jQuery 1.6
.
i controlli di selezione sono ancora selezionabili anche con attributo di sola lettura
se si desidera disabilitare ancora il controllo ma si desidera che venga pubblicato il suo valore. Potresti prendere in considerazione la creazione di un campo nascosto. con lo stesso valore del tuo controllo.
quindi crea un jquery, su select change
$('#your_select_id').change(function () {
$('#your_hidden_selectid').val($('#your_select_id').val());
});