Hallo,
ich beschränke bei Formularfeldern die erlaubten Zeichen:
<input name="Test" id="Test" value="" type="text" onkeydown='Bereinigen ("Test", 2);' onkeyup='Bereinigen ("Test", 2);'>
~~~~~~javascript
var Erlaubt = ["a-z -", "0-9.", "a-z -.0-9", "0-9", "a-z -."];
// 0 1 2 3 4
function Bereinigen (Feld, Nr)
{
Feld = document.getElementById (Feld);
var Test = "/[^" + Erlaubt[Nr] + "]/gi";
var B = /[^a-z]/gi; // a-z, A-Z
Feld.value = Feld.value.replace (Test, "");
}
Warum greift der reguläre Ausdruck, wenn ich den replace-Befehl "B" anstelle "RegExp" schreibe, und löscht nicht zugelassene Zeichen sofort heraus, aber nicht mit meinem Ansatz, den regulären Ausdruck in Abhängigkeit des zuzuweisenden, erlaubten Zeichenvorrats zusammenzusetzen?
var Test = new RegExp ("/[^" + Erlaubt[Nr] + "]/gi"); ändert auch nichts daran, dass nicht erlaubte Zeichen nicht zugelassen werden.
Lasse ich mir die Variable "Test" innerhalb der Funktion mit alert ausgeben, so scheint der reguläre Ausdruck korrekt zusammengesetzt worden zu sein:
/[^a-z -.0-9]/gi
Gruß,
Enrico