Bagaimana cara membuat input teks tidak dapat diedit?


344

Jadi saya punya input teks

<input type="text" value="3" class="field left">

Inilah CSS saya untuk itu

background:url("images/number-bg.png") no-repeat scroll 0 0 transparent;
border:0 none;
color:#FFFFFF;
height:17px;
margin:0 13px 0 0;
text-align:center;
width:17px; 

Apakah ada pengaturan atau trik untuk ini, saya berpikir untuk membuat label, tetapi bagaimana dengan styling. Bagaimana cara mengonversinya dan apakah ada cara yang lebih baik atau apakah itu satu-satunya cara?

Jawaban:


706
<input type="text" value="3" class="field left" readonly>

Tidak perlu styling.

Lihat <input>di MDN https://developer.mozilla.org/en/docs/Web/HTML/Element/input#Attributes


4
atau readonly = "readonly" jika Anda suka XML-y, lihat contoh Stephan Muller di bawah ini :)
Algy Taylor

1
@Algy Taylor: Ya, itu ada dalam jawaban asli ketika pertanyaan asli memiliki tag [xhtml] bandel yang membuat semua orang bingung tentang yang berlaku untuk standar mana: /
BoltClock

apakah ada cara untuk menghapus lingkaran merah yang muncul ketika Anda hover atas textareadengan readonlyatribut?
Chaudhry Waqas

1
@ Shafizadeh - Tidak, dan itu bagus. Akan sulit bagi browser untuk menerapkan dengan benar, dan membingungkan bagi orang untuk mengerti. jangan mencoba membuat kontrol sederhana melakukan tugas yang kompleks. Hancurkan input Anda menjadi beberapa bagian, dengan masing-masing bagian sederhana (kontrol yang dapat diedit, kemudian elemen HTML yang tidak dapat diedit, kemudian kontrol yang dapat diedit lainnya).
ToolmakerSteve

1
Pastikan juga untuk memeriksa sisi server ini jika Anda tidak ingin nilainya bertahan. Mudah di alat pengembang browser untuk menghapus atribut, yang pada gilirannya membuat bidang input lagi dapat diedit.
Kurt Van den Branden


41

Anda dapat menggunakan readonlyatribut, jika Anda ingin input Anda hanya dibaca. Dan Anda dapat menggunakan disabledatribut, jika Anda ingin input ditampilkan, tetapi benar-benar dinonaktifkan (bahkan memproses bahasa seperti PHP tidak akan dapat membacanya).


2
Saat Anda mengirim formulir ke file php, itu tidak akan membaca input yang dinonaktifkan. Mungkin itu yang dia maksud.
Carlos2W

3
apa yang sebenarnya terjadi adalah bahwa input yang dinonaktifkan TIDAK DIKIRIM KIRIM ketika Anda mengirimkan formulir, tidak ada hubungannya dengan php, js atau apa pun.
vasilevich

28

Hanya untuk melengkapi jawaban yang tersedia:

Elemen input dapat dibaca atau dinonaktifkan (tidak ada yang dapat diedit, tetapi ada beberapa perbedaan: fokus, ...)

Penjelasan yang baik dapat ditemukan di sini:
Apa perbedaan antara disable = “disable” dan readonly = “readonly” untuk kolom input form HTML?

Cara Penggunaan:

<input type="text" value="Example" disabled /> 
<input type="text" value="Example" readonly />

Ada juga beberapa solusi untuk membuatnya melalui CSS atau JavaScript seperti yang dijelaskan di sini .


5
Jika Anda akan menggunakan />untuk menutup tag Anda, Anda mungkin juga memperluas atribut untuk disabled="disabled"dan readonly="readonly"juga.
BoltClock


3

tambahkan atribut readonly

<input type="text" value="3" class="field left" readonly="readonly" >

atau -

<input type="text" value="3" class="field left" readonly>

tidak perlu css!


22
Apa yang ditambahkan ke pertanyaan yang belum dijawab oleh saya dan jawaban Stephan lebih dari 3 tahun sebelumnya? Anda bahkan mencerminkan pernyataan saya tentang CSS yang tidak diperlukan.
BoltClock

2

Anda hanya perlu menambahkan dinonaktifkan di akhir

<input type="text" value="3" class="field left" disabled>

1
Nilai tidak dikirimkan jika Anda menyetelnya ke dinonaktifkan. Mungkin itu yang Anda butuhkan, tetapi bukan itu yang diminta. Sebagai catatan, saya datang ke sini justru karena input "cacat" saya tidak berlaku seperti yang saya harapkan
Balmipour

2

Tambahkan readonly:

<input type="text" value="3" class="field left" readonly>

Jika Anda ingin nilai tidak dikirimkan dalam formulir, alih-alih tambahkan disabledatribut.

<input type="text" value="3" class="field left" disabled>

Tidak ada cara untuk menggunakan CSS yang selalu berfungsi untuk melakukan ini.

Mengapa? CSS tidak dapat "menonaktifkan" apa pun. Anda masih dapat mematikan tampilan atau visibilitas dan penggunaan pointer-events: nonetetapi pointer-eventstidak berfungsi pada versi IE yang keluar lebih awal dari IE 11.


0

jika Anda benar-benar ingin menggunakan CSS , gunakan properti berikut yang akan membuat bidang tidak dapat diedit.

pointer-events: none;

Oh, oh, oh. Ini tidak berfungsi di beberapa browser.
zixuan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.