Mahlzeit,
deine Antworten sind mir ein Rätsel.
das ist erstmal nichts Schlechtes. ;-)
Kann man es nicht einfach mal etwas ausführlicher oder genauer erklären, so wie Felix?
Im Prinzip ja - normalerweise versuche ich aber, nicht direkt die Lösung aufzuzeigen, sondern den Fragesteller auf seine Fehler hinzuweisen, so dass er mit etwas Nachdenken versteht, wo es klemmt und warum. Entschuldige bitte, wenn ich da bei dir zu viel "Insight", sprich Fachwissen und Verständnis voraussetze.
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.
Genau. Ob dein Regex an sich korrekt ist, habe ich jetzt noch gar nicht betrachtet; dein Fehler liegt schon im Ansatz.
Du hast eine Funktion isValidFilename(), die als Parameter den ursprünglichen, eventuell ungültigen Dateinamen bekommt, und als Funktionsergebnis den korrigierten Namen liefert (vorausgesetzt, die Funktion selbst arbeitet korrekt).
Anmerkung: Eine Funktion, die is...() benannt ist, fragt zumindest dem Namen nach eigentlich nach einer Ja/Nein-Information, und man würde ein boolsches Ergebnis (true/false) erwarten. So gesehen ist deine Funktion unpassend benamst. Aber das nur nebenbei.
Da, wo du die Funktion aufrufst, im keyup-Eventhandler, nimmst du das Ergebnis aber gar nicht entgegen!
Natürlich. Du tust ja auch nichts dagegen.
Auch diese Aussage ist mir schleierhaft. Wenn ein Fehler in der Regex ist dann kannst du es doch sagen oder?
Nein, Regex ist nicht meine starke Seite, da halte ich mich raus. Meine Kritik galt ausschließlich deiner fehlerhaften Programmlogik. Du müsstest zumindest das Funktionsergebnis nach dem Aufruf wieder in das Textfeld schreiben.
Vom Bedienungskomfort her finde ich das aber auch nicht schön, denn erstens flackert der Inhalt des Eingabefelds dann bei jedem Tastendruck, zweitens ist es eventuell irritierend, wenn man beispielsweise ein ':' drückt und es passiert nichts.
Ich persönlich würde die Validierung der Eingabe erst beim Absenden des Formulars machen (also onsubmit), und dann ggf. den Nutzer informieren, dass der eingegebene Dateiname ungültige Zeichen enthält.
Ich hoffe, die Erklärung war jetzt ein wenig besser.
So long,
Martin