Làm cách nào tôi có thể sử dụng jQuery để tạo đầu vào chỉ đọc?


142

Tôi có đầu vào sau:

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

Làm cách nào tôi có thể sử dụng jQuery để biến phần tử này thành đầu vào chỉ đọc mà không thay đổi thành phần hoặc giá trị của nó?

Câu trả lời:


255

Những ngày này với jQuery 1.6.1 trở lên, nên sử dụng .prop () khi thiết lập các thuộc tính / thuộc tính boolean.

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

89

chỉ cần thêm thuộc tính sau

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

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

jQuery để thực hiện thay đổi để các phần tử (thay thế disabledcho readonlytrong những điều sau đây để thiết lập readonlythuộc tính).

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

hoặc là

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

LƯU Ý: Kể từ jQuery 1.6, nên sử dụng .prop()thay vì .attr(). Các mã trên sẽ hoạt động chính xác như nhau ngoại trừ thay thế .attr()cho .prop().


4
vô hiệu hóa một trường không giống như làm cho nó không thể chỉnh sửa, phải không? vô hiệu hóa nó sẽ làm cho nó cũng không gửi
Dave

2
@Dave đúng. Ngoài ra, đầu vào chỉ đọc có thể được tập trung, đầu vào bị vô hiệu hóa không thể
Russ Cam

74

Để làm cho đầu vào chỉ đọc sử dụng:

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

để làm cho nó đọc / ghi sử dụng:

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

thêm disabledthuộc tính sẽ không gửi giá trị với bài viết.


7

Bạn có thể làm điều này bằng cách đơn giản đánh dấu nó disabledhoặc enabled. Bạn có thể sử dụng mã này để làm điều này:

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

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

hoặc là

$ ('# fieldName'). prop ('chỉ đọc', đúng);

$ ('# fieldName'). prop ('chỉ đọc', sai);

--- Tốt hơn là sử dụng prop thay vì attr.


7
Đầu vào bị vô hiệu hóa không được gửi trên mẫu bài / nhận.
Nielsvh

4

Sử dụng ví dụ này để tạo hộp văn bản ReadOnly hoặc 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

Có hai thuộc tính, cụ thể readonlydisabled, có thể tạo đầu vào chỉ đọc nửa đọc. Nhưng có một sự khác biệt nhỏ giữa chúng.

<input type="text" readonly />
<input type="text" disabled />
  • Các readonlythuộc tính làm cho văn bản đầu vào của bạn khuyết tật, và người dùng không thể thay đổi được nữa.
  • disabledThuộc tính không chỉ làm cho văn bản đầu vào của bạn bị vô hiệu hóa (không thể thay đổi) mà còn không thể gửi nó .

Cách tiếp cận jQuery (1):

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

Cách tiếp cận jQuery (2):

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

Cách tiếp cận JavaScript:

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

PS propgiới thiệu với jQuery 1.6.


0

Được -

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

công việc này - (jquery 1.7.1)

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

đã thử nghiệm với readonly và readOnly - cả hai đều hoạt động.


-1

Có thể sử dụng atribution bị vô hiệu hóa:

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

Hoặc chỉ sử dụng thẻ nhãn :;)

<label>

1
Câu hỏi cho biết "Với jQuery" (ngụ ý nó nên được thực hiện một cách linh hoạt) và "chỉ đọc" (khác với bị vô hiệu hóa).
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

Có lẽ nó cũng có ý nghĩa để thêm rằng

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

có thể được sử dụng như một tùy chọn chuyển đổi ..


Tôi đã thử điều này với jQuery 3.3.1 và nó chỉ đơn giản là thêm một readonlythuộc tính cho phần tử, bất kể giá trị được truyền vào. Vì vậy, ví dụ của bạn sẽ kết thúc làm cho trường đầu vào chỉ đọc, mặc dù rõ ràng là đặt giá trị thành sai.
TMN

-1

Trong JQuery 1.12.1, ứng dụng của tôi sử dụng mã:

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

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

Và nó hoạt động.


-2

SetReadOnly (trạng thái) rất hữu ích cho các biểu mẫu, chúng ta có thể đặt bất kỳ trường nào thành setReadOnly (trạng thái) trực tiếp hoặc từ nhiều điều kiện khác nhau. Nhưng tôi thích sử dụng readOnly để đặt độ mờ cho bộ chọn nếu không thì attr = 'bị vô hiệu hóa' cũng hoạt động như cùng một cách

ví dụ chỉ đọc:

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

hoặc thông qua các mã khác nhau như

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

ở đây chúng tôi đang sử dụng giá trị boolean trạng thái để đặt và xóa thuộc tính chỉ đọc khỏi đầu vào tùy thuộc vào một lần nhấp vào hộp kiểm.


các ví dụ trên không hoạt động - setReadOnly không phải là một hàm được tích hợp trong jquery hoặc bất kỳ trình duyệt nào
Dave B 84

-3

Trong html

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

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

trong bootstrap

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

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

JQuery là một thư viện thay đổi và đôi khi họ thực hiện các cải tiến thường xuyên. .attr () được sử dụng để lấy các thuộc tính từ các thẻ HTML và mặc dù nó có chức năng hoàn hảo .prop () được thêm vào sau để có ngữ nghĩa hơn và nó hoạt động tốt hơn với các thuộc tính không có giá trị như 'được chọn' và 'được chọn'.

Bạn nên sử dụng phiên bản JQuery mới hơn, bạn nên sử dụng .prop () bất cứ khi nào có thể.


2
Tôi đã bỏ phiếu này vì nó vô lý. Đó là tất cả HTML, JavaScript và Bootstrap sử dụng jQuery để thực tế thậm chí không liên quan. Ngoài ra, vô hiệu hóa và chỉ đọc là hai thứ khác nhau hoạt động độc lập với việc Bootstrap có được sử dụng hay không.
simontemplar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.