Verhindern, dass ungültige Zeichen in Felder eingegeben werden: Eine umfassende Anleitung
<p><code>Onkeydown</code>, ich führe das folgende JavaScript aus: </p>
<pre class="brush:php;toolbar:false;">function ThisOnKeyDown(el) {
if (el.title == 'textonly') {
!(/^[A-Za-zÑñ-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-s]/ig, '') : Null;
}
if (el.title == 'numbersonly') {
!(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null;
}
if (el.title == 'textandnumbers') {
!(/^[A-Za-zÑñ0-9-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-s ]/ig, ''): null;
}
}</pre>
<p>Jedem Eingabefeld auf der Seite wird eines dieser drei Titelattribute zugewiesen. Der Code funktioniert, solange die ungültigen Zeichen korrekt entfernt werden, jedoch nicht, bis das nächste Zeichen eingegeben wird. Ich würde gerne eine Möglichkeit finden, ungültige Eingaben einfach abzulehnen. Vielen Dank für Ihre Hilfe! </p>
<p><strong>Bearbeiten</strong>: Ich erstelle Ereignisse global. Das habe ich gemacht: </p>
<pre class="brush:php;toolbar:false;">function Globalization() {
var inputs = document.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++) {
inputs[i].onfocus = createEventHandler(
ThisOnFocus, Eingaben[i]);
inputs[i].onblur = createEventHandler(
ThisOnBlur, Eingaben[i]);
inputs[i].onkeydown = createEventHandler(
ThisOnKeyDown, Eingaben[i]);
inputs[i].onkeyup = createEventHandler(
ThisOnKeyUp, Eingaben[i]);
}
}</pre>
<p><code>globalisierung()</code>run<code>body.onload</code></p>
<p>Ein typisches Eingabefeld hat also HTML und keine Funktionsaufrufe wie diesen: </p>
<pre class="brush:php;toolbar:false;"><input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/> ;</pre>
<p><br /></p>