Come posso fare in modo che un campo di input sia letto ma che abbia comunque inviato i dati a un modulo?

Ho un campo di input:

 

Voglio che il campo venga visualizzato sul mio modulo ma non voglio che l’utente sia in grado di modificare il campo. Quando l’utente fa clic su Invia, voglio che il valore del modulo venga inviato nuovamente al server.

È ansible. Ho provato diverse combinazioni di disabled = "disabled" , readonly = "readonly" . Sembra che non ottenga nulla di rimandato indietro per il campo.

L’aggiunta di un campo nascosto con lo stesso nome invia i dati quando il modulo viene inviato.

   

Supponendo che tu stia utilizzando uno script per creare il modulo, ti suggerisco di usare che invierà la variabile con il modulo, ma anche di usare un normale per mostrare la variabile all’utente. Questo non invierà il valore, ovviamente, ma lo renderà visibile (mentre l’input hidden invierà il valore, ma non mostrerà il valore).

Puoi anche farlo con JavaScript:

 var theForm = document.getElementsByTagName('form')[0]; var inputs = document.getElementsByTagName('input'); for (i=0; i 

Demo di Clumsy JS Fiddle .

in alternativa puoi fare una piccola manipolazione con javascript, rimuovere la proprietà disabilitata prima del modulo inviato

 

Con il browser Chrome su Windows 10 è sufficiente avere name = “nome_utente” e gli attributi readonly funzionano correttamente: il client non può modificare un valore, ma viene inviato al server.

   

Si dovrebbe considerare l’utilizzo dell’input type = “hidden” quando si inviano campi di sola lettura. Altrimenti, se hai ancora bisogno che il valore del campo di input sia visibile, dovresti creare un altro input (type = text) con un nome diverso.