Element dynamisch Funktion zuordnen
Dieter Raber
- javascript
0 Struppi0 eisen0 Struppi0 eisen
0 Dieter Raber
Hallo,
Wie man einem Element mit JS eine Funktion zuordnet, ist mir klar, insofern mag das Thema etwas ungluecklich gewaehlt sein. Was mir hingegen nicht klar ist, laesst sich am Beispiel des folgenden Codes nachvollziehen.
Die Form 'myform' soll onsubmit das Ergebnis der Funktion foo() returnen, mit andern Worten, so tun, als waere nichts geschehen. Ich schaffe es zwar, der Form in der Funktion bar() weiteren Code unterzuschieben, aber natuerlich wird die Form jetzt uebertragen, was eigentlich nicht sein sollte. Wie kann ich herausfinden, ob in onsubmit, platt gesagt, eine return vor dem Funktionsaufruf steht, oder nicht.
<html>
<head>
<script type="text/javascript">
function foo ()
{
return false;
}
function bar()
{
var myForm = document.getElementById('myform');
var myInput = document.getElementById('myinput');
var oldFunc = myForm.onsubmit || new Function();
myForm.onsubmit = function()
{
myInput.value = 'ersatz';
oldFunc();
}
}
window.onload = function()
{
bar()
}
</script>
</head>
<body>
<form onsubmit="return foo()" method="get" id="myform">
<input type="text" value="original" name="test" id="myinput">
<input type="submit">
</form>
</body>
</html>
Erstmal danke,
Dieter
...Wie kann ich herausfinden, ob in onsubmit, platt gesagt, eine return vor dem Funktionsaufruf steht, oder nicht.
Musst du das?
Warum machst du nicht einfach:
myForm.onsubmit = function()
{
myInput.value = 'ersatz';
oldFunc();
return oldFunc();
Struppi.
<form onsubmit="return foo()" method="get" id="myform">
müsste zunächst einmal lauten:
<form onsubmit="foo()" method="get" id="myform">
aber mir ist nicht ganz klar, was du eigentlich machen willst.
Wenn das Form eh nichts übertragen soll, reicht doch ein simples <form id="myform">.
Auf die Daten des Formulars kannst du doch von überall mit document.myform.test.value zugreifen.
Zum auslösen reicht ein beliebiges Element, was ein onclick verträgt.
<form onsubmit="return foo()" method="get" id="myform">
müsste zunächst einmal lauten:
<form onsubmit="foo()" method="get" id="myform">
Quatsch!
Struppi.
ja ist Quatsch, wohl wahr...
Hallo eisen,
<form onsubmit="return foo()" method="get" id="myform">
müsste zunächst einmal lauten:
<form onsubmit="foo()" method="get" id="myform">
return foo() ist durchaus gewollt, sonst waere meine Frage ja auch sinnlos. Da die das offenbar nicht ganz klar ist, hier ein klassisches Beispiel:
Sagen wir, die Funktion foo() soll das Formular validieren. Sie wuerde dann etwa so aussehen
function foo()
{
if(alle Felder wurden ausgefuellt) // oder was immer ueberprueft werden soll
{
return true; // das Formular kann uebertragen werden
}
else // wenn irgendwelche Fehler aufgetaucht sind
{
alert('fehlermeldung')
return false; // das Formular soll nicht uebertragen werden
}
}
Wenn du jetzt in der Form return foo() stehen hast, wird erstens foo() ausgefuehrt, also das Formular ueberprueft und zweitens, je nach Ergebnis der Validierung, das Formular abgeschickt oder auch nicht.
aber mir ist nicht ganz klar, was du eigentlich machen willst.
Ich hoffe, das ist jetzt deutlicher.
Auf die Daten des Formulars kannst du doch von überall mit document.myform.test.value zugreifen.
Ist schon klar, das mit dem Formular ist ja auch nur Beispiel
Gruß,
Dieter