Hallo
Hallo Martin, deine Antworten sind mir ein Rätsel. Kann man es nicht einfach mal etwas ausführlicher oder genauer erklären, so wie Felix?
Schön - damit rufst du die Prüffunktion zwar bei jedem Tastendruck im Textfeld auf, kümmerst dich aber nicht um das Ergebnis.
Was soll das heissen? Ich will doch erreichen das im Textfeld keine unerlaubten Zeichen drin sind und diese dann auch nicht gespeichert werden.
Du tust aber, wie Martin schon sagte, nichts dafür. Deine Funktion aus diesem Posting, neu formatiert.
function isValidFilename(fname) {
var rexp = new RegExp(/[^\/:*\?"<>|]/)
return fname.replace(rexp, "")
}
Du definierst einen Rückgabewert. Der besteht aus dem Eingabestring mit den evtl. gelöschten Zeichen. Du rufst deine Funktion auf …
onkeyup="isValidFilename(this.value)"
Natürlich. Du tust ja auch nichts dagegen.
Auch diese Aussage ist mir schleierhaft.
… und verarbeitest den Rückgabewert nicht. Es steht also nachher der gleiche String im Formularfeld, wie vorher, weil er nicht mit dem Ergebnis des Funktionsaufrufs ersetzt wird. Wenn du die Funktion nicht an mehreren Stellen einsetzt, kannst du den String auch innerhalb der Funktion überschreiben. Willst du die Funktion am mehreren Stellen einsetzen, musst du dazu noch das Element, welches bearbeitet werden soll, als Parameter an die Funktion übergeben.
Dass es für den Benutzer des Formulars verwirrend sein kann, dass einzelne, soeben eingegebene Zeichen stante pede wieder verschwinden, steht auf einem anderen Blatt.
Tschö, Auge
Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
Terry Pratchett, „Gevatter Tod“