return-value from javascript function
Sebastian
- javascript
Hallo,
ich möchte gern die Usereingabe bei einem Inputfield überprüfen und ggf. auch gleich entsprechend korrigieren. In diesem Feld dürfen nur Zahlen eingegeben werden; die Überprüfung funktioniert auch so, aber wenn der User ein falsches Zeichen eingibt, dann soll dieses auch entsprechend gelöscht
werden. Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.
function isNumeric(sText) {
alert(sText);
var ValidChars = "0123456789";
var strReturn = "";
for (i = 0; i < sText.length; i++) {
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) != -1) {
//remove this character
strReturn += Char;
}
}
return strReturn;
}
<input type="text" name="uni1" id="uni1" maxlength="15" class="form-txtf" onkeyup="return isNumeric(this.value)" value="34" />
Für einen Tipp wäre ich euch sehr dankbar.
Gruß
Seb
Tach,
Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.
return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.
mfg
Woodfighter
Tach,
Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.
return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.
lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?
Oh, eine Raterunde :-)
Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.
return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.
lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?
Nein und Ja
Struppi.
Hi,
return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.
lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss.
Muss nicht, wäre aber praktisch, damit es nicht an jeder aufrufenden Stelle gemacht werden muss.
Und btw., in Annahmen geht man richtig, statt sich rein zu legen :-)
Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?
Übergebe nicht den Inhalt des Feldes mit this.value an die Funktion, sondern die Referenz auf das Feld selber, also nur this.
MfG ChrisB
Tach,
Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.
return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.
lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?
vielen Dank it`s working, indem ich this übergebe.
Hallo,
ich würde das folgendermaßen machen:
<input type="text" id="textfeld">
<script type="text/javascript">
[code lang=javascript]// Der Code wird in eine selbstausführende Funktion verpackt,
// damit die Variablen und Funktionen nur lokal sind.
(function () {
// [link:http://molily.de/js/event-handling-fortgeschritten.html#einfaches-addevent@title=addEvent-Helferfunktion]
function addEvent (obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
} else if (obj.attachEvent) {
obj.attachEvent('on' + type, function () {
return fn.call(obj, window.event);
});
}
}
// Greife auf das Textfeld zu
var textfeld = document.getElementById('textfeld');
// Registriere Event-Handler
addEvent(textfeld, 'keyup', filterInput);
addEvent(textfeld, 'change', filterInput);
addEvent(textfeld, 'keypress', preventInput);
// Filtere den [ref:self812;javascript/objekte/elements.htm#value@title=value-String] des Feldes mit [ref:self812;javascript/objekte/string.htm#replace@title=replace] und einem [ref:self812;javascript/objekte/regexp.htm@title=regulären Ausdruck]
// (Lösche alle Zeichen die nicht 0-9 sind)
function filterInput (e) {
textfeld.value = textfeld.value.replace(/[^\d]/g, '')
}
// Verhindere, dass überhaupt andere Zeichen als 0-9
// eingegben werden können.
function preventInput (e) {
// Hole den Code des gedrückten Zeichens browserübergreifend
var charCode = e.charCode || e.keyCode;
// Wandle Code in Zeichen um
var char = String.fromCharCode(charCode);
// Teste mit einem regulären Ausdruck, ob es 0-9 ist
if (/[^\d]/.test(char)) {
// Wenn nicht, [link:http://molily.de/js/event-handling-objekt.html#standardaktion@title=unterdrücke die Standardaktion]
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
}
})();
</script>[/code]
Mathias