[javascript] 필드를 비활성화하지 않고 사용자가 텍스트 필드에 입력하는 것을 방지하는 방법은 무엇입니까?

나는 시도했다 :

$('input').keyup(function() {

   $(this).attr('val', '');

});

그러나 문자를 입력 한 후 입력 된 텍스트를 약간 제거합니다. 어쨌든 사용자가 텍스트 필드를 비활성화하지 않고 텍스트를 완전히 입력하지 못하게 할 수 있습니까?



답변

쉽게 간과 될 수있는 비 자바 스크립트 대안 : readonly대신 속성 을 사용할 수 있습니까?disabled 있습니까? 입력의 텍스트를 편집하는 것을 방지하지만 브라우저는 입력의 스타일을 다르게 지정합니다 ( “회색으로 표시”할 가능성이 낮음).<input readonly type="text" ...>


답변

필드가 “비활성화 됨”또는 약간만 보이게하지 않으려면 다음을 사용하십시오.

onkeydown="return false;"

기본적으로 greengit과 Derek이 말한 것과 동일하지만 조금 더 짧습니다.


답변

$('input').keydown(function(e) {
   e.preventDefault();
   return false;
});


답변

$('input').keypress(function(e) {
    e.preventDefault();
});


답변

사용자가 아무것도 추가하지 못하도록하고 문자를 지울 수있는 기능을 제공 하려는 경우 :

<input value="CAN'T ADD TO THIS" maxlength="0" />

maxlength입력 의 속성을로 설정하면 "0"사용자가 콘텐츠를 추가 할 수 없지만 원하는대로 콘텐츠를 지울 수 있습니다 .


그러나 진정으로 일정하고 변경할 수 없도록하려면 :

<input value="THIS IS READONLY" onkeydown="return false" />

onkeydown속성을로 설정하면 return false입력이 사용자 keypresses를 무시 하도록하여 값이 변경되거나 영향을받지 않도록합니다.


답변

필요에 따라 사용할 수있는 또 하나의 방법 $('input').onfocus(function(){this.blur()}); 은 이것이 작성하는 방법이라고 생각합니다. 나는 jquery에 능숙하지 않습니다.


답변

마크 업

<asp:TextBox ID="txtDateOfBirth" runat="server" onkeydown="javascript:preventInput(event);" onpaste="return false;"
                                TabIndex="1">

스크립트

function preventInput(evnt) {
//Checked In IE9,Chrome,FireFox
if (evnt.which != 9) evnt.preventDefault();}