javascript - Bir input type=text nasıl devre dışı bırakılır?
Mümkünse, JavaScript kullanarak text türündeki bir giriş alanında yazmayı devre dışı bırakmak istiyorum. Giriş alanı bir veritabanından dolduruluyor; bu yüzden kullanıcının değerini değiştirmesini istemiyorum.
Cevap #1
document.getElementById('foo').disabled = true;
veya
document.getElementById('foo').readOnly = true;
Firefox'ta doğru çalışması için readOnly öğesinin camelCase şeklinde olması gerektiğini unutmayın (sihir).
Demo: https://jsfiddle.net/L96svw3c/ -- disabled ve readOnly arasındaki farkı kısmen açıklıyor.
Cevap #2
Sayfa render edildiğinde bunu biliyorsanız, ki veritabanında bir değerin olduğu anlaşıldığına göre biliyorsunuz, bunu JavaScript ile değil, render edildiğinde devre dışı bırakmak daha iyidir. Bunu yapmak için, <input> öğesine readonly özniteliğini (ya da form gönderiminden de kaldırmak istiyorsanız disabled özniteliğini) eklemeniz yeterlidir, şöyle:
<input type="text" disabled="disabled" />
//or...
<input type="text" readonly="readonly" />
Cevap #3
Veriler veritabanından dolduruluyorsa, bunu göstermek için bir <input> etiketi kullanmamayı düşünebilirsiniz. Yine de, etikette doğrudan devre dışı bırakabilirsiniz:
<input type='text' value='${magic.database.value}' disabled>
Daha sonra Javascript ile devre dışı bırakmanız gerekirse, "disabled" özniteliğini ayarlayabilirsiniz:
document.getElementById('theInput').disabled = true;
Değeri bir <input> olarak göstermemeyi önermemin nedeni, deneyimlerime göre bunun düzen sorunlarına yol açmasıdır. Metin uzunsa, bir <input> içinde kullanıcı metni kaydırmayı denemek zorunda kalacaktır ki bu, normal insanların tahmin edebileceği bir şey değildir. Eğer bunu sadece bir <span> içine koyarsanız veya benzer bir şey kullanırsanız, daha fazla stil esnekliğine sahip olursunuz.
Cevap #4
Giriş kutunuza istediğiniz şekilde bir referans alın (örneğin document.getElementById('mytextbox')) ve readonly özelliğini true olarak ayarlayın:
myInputBox.readonly = true;
Alternatif olarak, bu özelliği satır içi olarak ekleyebilirsiniz (JavaScript gerekmez):
<input type="text" value="from db" readonly="readonly" />
