Verhindern, dass Benutzer vom schreiben mehr als N Zeichen in einer textarea mit Prototyp-Ereignis-Beobachter

Ich bin mir bewusst, dass es möglich ist, zu emulieren, die maxlength Eigenschaft von input Elemente auf einer textarea durch die Nutzung dieser trick:

<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>

Mithilfe checkLenght Rückgabewert, als Rückgabewert für die onkeydown Veranstaltung, ich bin in der Lage, effektiv verhindern, dass die Benutzer vom schreiben über das konfigurierte limit, da der event-Kette gebrochen werden, bevor die eingegebenen Zeichen angezeigt wird.

Ich habe versucht, die gleiche Technik mit Prototypen Ereignis-Beobachter, aber es hat nicht funktioniert. Hier ist eine vereinfachte version von dem, was ich versuchte:

<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>

Offenbar, das wird nicht funktionieren, denn ich kann nicht brechen die Ereignis-Kette durch Rückgabe von false (und Event.stop() nur verhindern, dass dieses Ereignis von bubbling-up, nicht zu stoppen, die Ausführung insgesamt).

Habe ich workarounded dieses problem durch die überprüfung der textarea-Länge auf die onkeyup Ereignis und trimmen seinen Wert, wenn der Grenzwert überschritten wird; aber es ist nicht das gleiche, wie der Benutzer siehe text erscheinen und verschwinden.

Ist es ein Weg, um das gleiche Ergebnis zu erzielen?

Nur lose zusammenhängen, aber, hasse es, wenn Websites dies tun. Viel besser, lassen Sie die Benutzer geben, was Sie wollen, aber geben ein gutes feedback, die Sie benötigen, zu korrigieren (verkürzen) Sie es, bevor Sie es annehmen.
Gut, es ist ein standard in desktop-Anwendungen, um nicht lassen Sie Sie schreiben über die Eingabe beschränken. Der Unterschied ist, dass im desktop-Anwendungen, die Sie in der Regel hören einen "piep", wenn Sie versuchen, das zu tun. Wie auch immer, ich denke, die meisten Benutzer werden es vorziehen, dass eine sofortige Rückmeldung, wenn Sie versuchen zu schreiben, über die Grenze, um neu zu schreiben (oder löschen) ein Haufen text schon geschrieben.

InformationsquelleAutor Pablo Borowicz | 2009-10-08

Schreibe einen Kommentar