입력 유형 = 텍스트를 비활성화하는 방법은 무엇입니까?


123

text가능한 경우 JavaScript를 사용하여 유형의 입력 필드에 쓰기를 비활성화하고 싶습니다 . 입력 필드는 데이터베이스에서 채워집니다. 이것이 사용자가 값을 수정하는 것을 원하지 않는 이유입니다.

답변:


172

페이지가 렌더링 될 때 이것을 알고 있다면, 데이터베이스에 값이 있기 때문에 그렇게 들리는 것처럼 들리면 JavaScript 대신 렌더링 할 때 비활성화하는 것이 좋습니다. 이렇게하려면 다음과 같이 readonly속성 (또는 disabled양식 제출에서도 제거하려면)을에 추가하십시오 <input>.

<input type="text" disabled="disabled" />
//or...
<input type="text" readonly="readonly" />

81
왜 이것이 투표를 받는지 모르겠지만 질문에 대답하지 않습니다. 우리는 자바 스크립트 답변을 기대했습니다.
Sophie는

3
@Sophie는 질문자가 상황에 따라 작업을 수행하는 가장 올바른 방법입니다. 아마도 제목 변경이 필요합니다.
Nick Craver

6
비활성화 모드는 입력 상자에서 클릭 이벤트를 방지하지만 읽기 전용은 그렇지 않습니다. 참고로.
knutole 2014.04.23

"disabled"필드처럼 "readonly"입력 필드를 LOOK으로 설정하려면 'style = "color : grey; background-color : # F0F0F0;"'을 설정하십시오. (이것은 이 답변 에 대한 의견이었습니다 )
Jake Toronto

2
브라우저는 "disabled"또는 "readonly"속성을 자유롭게 무시할 수 있으며,이 메서드는 데이터가 업데이트되지 않도록 안정적으로 유지하는 데 의존해서는 안됩니다. 양식을 처리하는 서버 측 코드가 여전히 수락하는 경우 해당 필드에서 값을 가져 와서 업데이트하면 자신의 양식을 작성할 수있는 충분한 지식을 가진 사람은이 "비활성화"를 우회 할 수 있습니다. 이것은 신뢰할 수있는 환경에서만 사용자 인터페이스 편의를위한 것입니다. 이를 방지하는 실제 방법은 서버 측 논리를 사용하는 것입니다.
Aaron Wallentine

206
document.getElementById('foo').disabled = true;

또는

document.getElementById('foo').readOnly = true;

참고 readOnly낙타 표기법에 있어야 파이어 폭스 (마법)에서 제대로 작동합니다.

데모 : https://jsfiddle.net/L96svw3c/은 - 약간의 차이 설명 disabledreadOnly.


3
이것은 나를 위해 일했습니다. Jquery 버전은 $ ( 'input'). prop ( 'disabled', true)
Daniel Sun Yang

나는 이것에 대해 7 년 늦었지만 2017 년에이 둘 사이에 의미 상 차이가 있습니까?
Jules

2
당신은 전혀 늦지 않았고 마법은 여전히 ​​존재합니다 (: 그 당시에 내가 테스트 한 플랫폼을 기억하지 못하지만 오늘 readonly(소문자)은 Ubuntu의 Firefox 52에서 여전히 작동하지 않습니다-낙타 케이스이어야합니다.
hudolejev

왜 이것이 저에게 효과가 없습니까? 나는 만든 input소자와 id="gate"나는 나를 위해 작동하지 않는 것 코드를 ... 시도
볼드 모트의 분노

21

데이터가 데이터베이스에서 채워지는 경우 태그를 사용하여 표시 하지 않는<input> 것이 좋습니다. 그럼에도 불구하고 태그에서 바로 비활성화 할 수 있습니다.

<input type='text' value='${magic.database.value}' disabled>

나중에 Javascript로 비활성화해야하는 경우 "disabled"속성을 설정할 수 있습니다.

document.getElementById('theInput').disabled = true;

값을 표시하지 않는 것이 좋습니다 <input>. 제 경험상 레이아웃 문제가 발생하기 때문입니다. 텍스트가 길면 <input>사용자는 텍스트를 시도하고 스크롤해야하는데, 이는 보통 사람들이 추측하는 일이 아닙니다. <span>또는 무언가에 그냥 놓으면 스타일링 유연성이 높아집니다.


3
비활성화하면 일부 브라우저에서 텍스트를 거의 읽을 수 없게 될 수 있습니다. 읽기 전용 속성을 사용하는 것이 더 나을 수 있습니다. 예 : <input type = "text"value = "foo"readonly>
Olly Hodgson

7

jquery로도 할 수 있습니다.

$('#foo')[0].disabled = true;

작업 예 :

$('#foo')[0].disabled = true;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="foo" placeholder="placeholder" value="value" />


1
@Chani Poz jquery 객체에서 네이티브 js setter를 호출하면 오류가 발생합니다. $ ( '# foo') [0] .disabled = true 또는 $ ( '# foo'). get (0) .disabled = true가 작업을 수행합니다
Arek Kostrzeba

6

원하는대로 입력 상자에 대한 참조를 가져 document.getElementById('mytextbox')오고 (예 :) readonly속성을 true다음 과 같이 설정 합니다 .

myInputBox.readonly = true;

또는 간단히이 속성을 인라인으로 추가 할 수 있습니다 (JavaScript 필요 없음).

<input type="text" value="from db" readonly="readonly" />

HTML (XHTML과 반대)을 작성하는 경우 <input type = "text"value = "from db"readonly>
Olly Hodgson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.