javascript - Cum să dezactivezi un input de tip text?
Vreau să dezactivez scrierea într-un câmp de input de tip text folosind JavaScript, dacă este posibil. Câmpul de input este populat dintr-o bază de date; de aceea nu vreau ca utilizatorul să îi modifice valoarea.
Răspuns #1
document.getElementById('foo').disabled = true;
sau
document.getElementById('foo').readOnly = true;
Rețineți că readOnly ar trebui să fie în camelCase pentru a funcționa corect în Firefox (magie).
Demo: https://jsfiddle.net/L96svw3c/ -- explică oarecum diferența dintre disabled și readOnly.
Răspuns #2
Dacă știți acest lucru atunci când pagina este redată, ceea ce pare că știți pentru că baza de date are o valoare, este mai bine să o dezactivați la redare în loc să folosiți JavaScript. Pentru a face asta, adăugați pur și simplu atributul readonly (sau disabled, dacă doriți să îl eliminați și din trimiterea formularului) la <input>, astfel:
<input type="text" disabled="disabled" />
//or...
<input type="text" readonly="readonly" />
Răspunsul #3
Dacă datele sunt populate din baza de date, ați putea lua în considerare nesugestia de a folosi un tag <input> pentru a le afișa. Cu toate acestea, îl puteți dezactiva direct în tag:
<input type='text' value='${magic.database.value}' disabled>
Dacă trebuie să îl dezactivați mai târziu cu Javascript, puteți seta atributul „disabled”:
document.getElementById('theInput').disabled = true;
Motivul pentru care sugerez să nu afișezi valoarea ca un <input> este că, din experiența mea, cauzează probleme de aspect. Dacă textul este lung, atunci într-un <input> utilizatorul va trebui să încerce să deruleze textul, ceea ce nu este ceva ce oamenii obișnuiți ar ghici să facă. Dacă îl pui pur și simplu într-un <span> sau ceva asemănător, ai mai multă flexibilitate în stilizare.
Răspuns #4
Obțineți o referință la caseta dvs. de introducere cum doriți (de exemplu document.getElementById('mytextbox')) și setați proprietatea sa readonly la true:
myInputBox.readonly = true;
Alternativ, poți pur și simplu să adaugi această proprietate direct în linie (nu este necesar JavaScript):
<input type="text" value="from db" readonly="readonly" />
