Bagaimana saya bisa menggunakan jQuery untuk membuat input hanya baca?


142

Saya memiliki input berikut:

  <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname"/>

Bagaimana saya bisa menggunakan jQuery untuk membuat elemen ini menjadi input read-only tanpa mengubah elemen atau nilainya?

Jawaban:


255

Hari-hari ini dengan jQuery 1.6.1 atau di atasnya, direkomendasikan .prop () digunakan ketika mengatur atribut / properti boolean.

$("#fieldName").prop("readonly", true);

89

cukup tambahkan atribut berikut

// for disabled i.e. cannot highlight value or change
disabled="disabled"

// for readonly i.e. can highlight value but not change
readonly="readonly"

jQuery untuk membuat perubahan ke elemen (pengganti disableduntuk readonlydi berikut untuk pengaturan readonlyatribut).

$('#fieldName').attr("disabled","disabled") 

atau

$('#fieldName').attr("disabled", true) 

CATATAN: Pada jQuery 1.6, disarankan untuk menggunakan .prop()alih-alih .attr(). Kode di atas akan bekerja persis sama kecuali pengganti .attr()untuk .prop().


4
menonaktifkan bidang tidak sama dengan membuatnya tidak dapat diedit, kan? menonaktifkannya akan membuatnya juga tidak mengirimkan
Dave

2
@ Sudah benar. Input yang hanya dapat dibaca dapat difokuskan, input yang dinonaktifkan tidak dapat
Russ Cam

74

Untuk membuat input hanya baca gunakan:

 $("#fieldName").attr('readonly','readonly');

untuk membuatnya baca / tulis gunakan:

$("#fieldName").removeAttr('readonly');

menambahkan disabledatribut tidak akan mengirim nilai dengan pos.


7

Anda dapat melakukan ini hanya dengan menandainya disabledatau enabled. Anda dapat menggunakan kode ini untuk melakukan ini:

//for disable
$('#fieldName').prop('disabled', true);

//for enable 
$('#fieldName').prop('disabled', false);

atau

$ ('# fieldName'). prop ('readonly', true);

$ ('# fieldName'). prop ('readonly', false);

--- Lebih baik menggunakan prop daripada ATTR.


7
Input yang dinonaktifkan tidak dapat dikirim pada formulir post / get.
Nielsvh

4

Gunakan contoh ini untuk membuat kotak teks ReadOnly or Not.

<input type="textbox" class="txt" id="txt"/>
<input type="button" class="Btn_readOnly" value="Readonly" />
<input type="button" class="Btn_notreadOnly" value="Not Readonly" />

<script>

    $(document).ready(function(){
       ('.Btn_readOnly').click(function(){
           $("#txt").prop("readonly", true);
       });

       ('.Btn_notreadOnly').click(function(){
           $("#txt").prop("readonly", false);
       });
    });

</script>

3

Ada dua atribut, yaitu readonlydan disabled, yang dapat membuat input semi-baca-saja. Tetapi ada perbedaan kecil di antara mereka.

<input type="text" readonly />
<input type="text" disabled />
  • The readonlyAtribut membuat teks masukan Anda dinonaktifkan, dan pengguna tidak dapat mengubahnya lagi.
  • disabledAtribut tidak hanya akan membuat input-teks Anda dinonaktifkan (tidak dapat diubah) tetapi juga tidak dapat dikirimkan .

Pendekatan jQuery (1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

Pendekatan jQuery (2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

Pendekatan JavaScript:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS propdiperkenalkan dengan jQuery 1.6.


0

Mengingat -

<input name="foo" type="text" value="foo" readonly />

ini bekerja - (jquery 1.7.1)

$('input[name="foo"]').prop('readonly', true);

diuji dengan readonly dan readOnly - keduanya bekerja.


-1

Mungkin menggunakan atribute dinonaktifkan:

<input disabled="disabled" id="fieldName" name="fieldName" type="text" class="text_box" />

Atau cukup gunakan label tag:;)

<label>

1
Pertanyaannya mengatakan "Dengan jQuery" (yang menyiratkan itu harus dilakukan secara dinamis) dan "read-only" (yang berbeda dengan dinonaktifkan).
Quentin

-1
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
    <title></title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>
<body>
    <div>
        <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname" />
    </div>
</body>

<script type="text/javascript">
    $(function()
    {
        $('#fieldName').attr('disabled', 'disabled');

    });
</script>
</html>

-1

Mungkin bermanfaat juga untuk menambahkan itu

$('#fieldName').prop('readonly',false);

dapat digunakan sebagai opsi sakelar ..


Saya mencoba ini dengan jQuery 3.3.1 dan hanya menambahkan readonlyatribut ke elemen, terlepas dari nilai yang diteruskan. Jadi, contoh Anda akan membuat bidang input hanya-baca, meskipun seolah-olah menetapkan nilai ke false.
TMN

-1

Di JQuery 1.12.1, aplikasi saya menggunakan kode:

$('"#raisepay_id"')[0].readOnly=true;

$('"#raisepay_id"')[0].readOnly=false;

dan itu berhasil.


-2

SetReadOnly (state) sangat berguna untuk form, kita dapat mengatur field apa saja untuk setReadOnly (state) secara langsung atau dari berbagai kondisi. cara yang sama.

bacaHanya contoh saja:

$('input').setReadOnly(true);

atau melalui berbagai kodisi suka

var same = this.checked;
$('input').setReadOnly(same);

di sini kita menggunakan nilai boolean negara untuk mengatur dan menghapus atribut readonly dari input tergantung pada klik kotak centang.


contoh di atas tidak berfungsi - setReadOnly bukan fungsi yang dibangun dalam jquery atau browser apa pun
Dave B 84

-3

Dalam html

$('#raisepay_id').attr("readonly", true) 

$("#raisepay_id").prop("readonly",true);

di bootstrap

$('#raisepay_id').attr("disabled", true) 

$("#raisepay_id").prop("disabled",true);

JQuery adalah pustaka yang berubah dan kadang-kadang mereka melakukan perbaikan secara teratur. .attr () digunakan untuk mendapatkan atribut dari tag HTML, dan sementara itu fungsional .prop () ditambahkan kemudian agar lebih semantik dan berfungsi lebih baik dengan atribut yang kurang bernilai seperti 'diperiksa' dan 'dipilih'.

Disarankan bahwa jika Anda menggunakan versi JQuery yang lebih baru, Anda harus menggunakan .prop () bila memungkinkan.


2
Saya memilih ini karena itu tidak masuk akal. Semuanya HTML, JavaScript, dan Bootstrap menggunakan jQuery sehingga faktanya bahkan tidak relevan. Selain itu, dinonaktifkan dan hanya baca adalah dua hal berbeda yang berfungsi terlepas dari apakah Bootstrap digunakan atau tidak.
simontemplar
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.