나는이 트릭을 사용하여 그것이 textarea
에 input
요소에서 maxlength
속성을 에뮬레이트 할 수 있다고 알고 : checkLenght의 사용하여방지 사용자
<textarea rows="5" cols="30" onkeydown="return checkLength(this)"></textarea>
<script type="text/javascript">
var maxLength = 30;
function checkLength(elem) {
if (elem.value.length == maxLength) {
return false;
}
return true;
}
</script>
을 반환 값을 onkeydown
이벤트의 반환 값으로 사용하면 입력 한 문자가 나타나기 전에 이벤트 체인이 끊어 지므로 사용자가 구성된 제한을 초과하여 글을 쓰는 것을 효과적으로 방지 할 수 있습니다.
Prototype의 이벤트 옵저버를 사용하여 동일한 기술을 시도했지만 작동하지 않았습니다. 여기에 내가 뭘하려의 단순화 된 버전입니다 : 내가 false를 반환하여 이벤트 체인을 깰 수 없기 때문에
<textarea rows="5" cols="30" id="myTextArea"></textarea>
<script type="text/javascript">
var maxLength = 30;
function checkLength() {
if ($('myTextArea').value.length == maxLength)) {
return false;
}
return true;
}
document.observe('dom:loaded',function(){
$('myTextArea').observe('keydown',checkLength);
});
</script>
분명히,이 작동하지 않습니다 (그리고 Event.stop()
만 정지하지 실행을 버블 링에서이 이벤트를 방지 할 수 있습니다 전부).
onkeyup
이벤트에서 텍스트 영역의 길이를 확인하고 제한을 초과하면 해당 값을 잘라서이 문제를 해결했습니다. 사용자가 텍스트가 나타나고 사라지는 것을 볼 수 있기 때문에 동일하지는 않습니다.
동일한 결과를 얻을 수있는 방법이 있습니까?
매우 관련이 있지만 웹 사이트에서 그렇게 할 때 사용하겠습니다. 사용자가 원하는 것을 입력하게하는 것이 훨씬 좋지만, 수락하기 전에 수정 (단축)해야하는 좋은 피드백을 제공하십시오. –
글쎄, 데스크톱 응용 프로그램의 표준으로, 입력 한도를 초과하여 작성할 수 없습니다. 차이점은 데스크톱 응용 프로그램에서는 일반적으로 "삐"소리가 들린다는 것입니다. 어쨌든 대부분의 사용자는 이미 작성된 텍스트를 다시 작성 (또는 삭제)해야하기 때문에 한도를 초과하여 글을 쓰려고 할 때 즉각적인 피드백을 선호합니다. –