jQuery를 사용하여 입력을 읽기 전용으로 만들려면 어떻게해야합니까?


142

다음과 같은 입력이 있습니다.

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

jQuery를 사용하여 요소 또는 값을 변경하지 않고이 요소를 읽기 전용 입력으로 만들려면 어떻게해야합니까?

답변:


255

요즘 jQuery 1.6.1 이상에서는 부울 속성 / 속성을 설정할 때 .prop ()를 사용하는 것이 좋습니다.

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

89

단순히 다음 속성을 추가하십시오

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

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

jQuery를은 (대체 원소로 변경하기 disabled위한 readonly설정에 대해 다음의 readonly속성).

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

또는

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

참고 : jQuery 1.6부터는 .prop()대신 사용 하는 것이 좋습니다 .attr(). 위의 코드는를 대신 .attr()하는 것을 제외하고는 정확히 동일하게 작동합니다 .prop().


4
필드를 비활성화하는 것은 필드를 편집 할 수 없게 만드는 것과 다릅니다. 사용 중지해도 제출되지 않음
Dave

2
@Dave 맞습니다. 또한 읽기 전용 입력에 초점을 맞출 수 있고 비활성화 된 입력은 할 수 없습니다
Russ Cam

75

입력을 읽기 전용으로 사용하려면 :

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

읽기 / 쓰기 사용하기 :

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

disabled속성을 추가하면 값이 post와 함께 보내지 않습니다.


7

간단히 disabled또는로 표시하면 enabled됩니다. 이 코드를 사용하여 다음을 수행 할 수 있습니다.

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

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

또는

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

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

--- attr 대신 prop를 사용하는 것이 좋습니다.


7
비활성화 된 입력은 양식 게시 / 가져 오기에 제출되지 않습니다.
Nielsvh

4

이 예제를 사용하여 텍스트 상자를 ReadOnly 또는 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

두 가지, 즉 속성이 있습니다 readonlydisabled반 읽기 전용 입력을 할 수 있습니다. 그러나 그들 사이에는 작은 차이가 있습니다.

<input type="text" readonly />
<input type="text" disabled />
  • readonly속성은 입력 텍스트를 비활성화하며 사용자는 더 이상 텍스트를 변경할 수 없습니다.
  • disabled속성은 입력 텍스트를 비활성화 (변경 불가능 )하게 할뿐만 아니라 제출할 수 없습니다 .

jQuery 접근법 (1) :

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

jQuery 접근 방식 (2) :

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

자바 스크립트 접근 :

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

PS (으)로 prop소개했습니다 jQuery 1.6.


0

주어진-

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

이것은 작동합니다-(jquery 1.7.1)

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

읽기 전용 및 readOnly로 테스트했습니다. 둘 다 작동했습니다.


-1

아마도 atribute disabled를 사용하십시오 :

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

또는 레이블 태그를 사용하십시오 :;)

<label>

1
질문은 "jQuery 사용"(동적으로 수행되어야 함을 의미 함) 및 "읽기 전용"(사용 불가능 함과는 다릅니다)이라고 말했습니다.
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

아마도 그것을 추가하는 것이 의미가 있습니다.

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

토글 옵션으로 사용할 수 있습니다.


나는 jQuery 3.3.1로 이것을 시도 readonly했으며 전달 된 값에 관계없이 단순히 요소에 속성을 추가합니다 . 따라서 값을 거짓으로 설정하더라도 입력 필드를 읽기 전용으로 만드는 예제가 나타납니다.
TMN

-1

JQuery 1.12.1에서 내 응용 프로그램은 코드를 사용합니다.

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

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

작동합니다.


-2

setReadOnly (state)는 양식에 매우 유용합니다. 우리는 직접 또는 다양한 조건에서 모든 필드를 setReadOnly (state)로 설정할 수 있습니다. 그러나 선택기에 불투명도를 설정하기 위해 readOnly를 사용하는 것을 선호합니다. 그렇지 않으면 attr = 'disabled'도 같은 길.

readOnly 예제 :

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

또는 다양한 코디네이션을 통해

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

여기서 우리는 상태 부울 값을 사용하여 체크 박스 클릭에 따라 입력에서 읽기 전용 속성을 설정하고 제거합니다.


위의 예제는 작동하지 않습니다. setReadOnly는 jquery 또는 모든 브라우저에 내장 된 기능이 아닙니다
Dave B 84

-3

HTML에서

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

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

부트 스트랩에서

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

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

JQuery는 변화하는 라이브러리이며 때로는 정기적으로 개선합니다. .attr ()은 HTML 태그에서 속성을 가져 오는 데 사용되며 완벽하게 작동하지만 나중에 더 의미 적으로 .prop ()가 추가되어 'checked'및 'selected'와 같은 값이없는 속성으로 더 잘 작동합니다.

최신 버전의 JQuery를 사용하는 경우 가능할 때마다 .prop ()를 사용해야합니다.


2
나는 이것이 무의미하기 때문에 이것을 투표하지 않았다. HTML, JavaScript 및 Bootstrap은 모두 jQuery를 사용하므로 사실과 관련이 없습니다. 또한 비활성화 및 읽기 전용은 부트 스트랩 사용 여부에 관계없이 작동하는 두 가지입니다.
simontemplar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.