neues fenster offnen durch formular
dalia
- javascript
Hallo forum,
zwar habe ich den archve durchgesucht fuer Tip's habe trotzdem habe ich kein Loesung auf mein Problem gefunden.
<form method=POST name="ReturnSummaryMenu" action="ReturnSummaryMenu" onsubmit=window.open('ReturnSummary.asp','ReturnSummary','titelbar=0,location=0,toolbar=no,directories=no,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600')>
sieht so aus als ich in meinem neuen Fenster keiner der elemente des form uebergeben wirdt.
fals ich
<form method=POST name="ReturnSummaryMenu" action="ReturnSummaryMenu" target="_blank">
eingebe ist OK aber ich moechte kein toolbar haben.
was ist falsch daran?
vielen Dank,
Dalia
Halihallo Dalia
<form method=POST name="ReturnSummaryMenu" action="ReturnSummaryMenu" onsubmit=window.open('ReturnSummary.asp','ReturnSummary','titelbar=0,location=0,toolbar=no,directories=no,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600')>
hier würd ich noch zwei '"' einsetzen (für das onSubmit-Attribut).
was ist falsch daran?
Also, die Formulardaten werden ja kodiert und dann an das Programm, welches durch _action_ spezifiziert wurde gesendet. Das heisst in deinem Beispiel, dass die Form-Daten an "ReturnSummaryMenu" gesendet werden, nicht aber an die window.open-Methode. onSubmit ist lediglich ein Event, der aufgerufen wird, wenn das Formular gesendet wird; der Event als solcher hat jedoch nix mit dem aufzurufenden Programm zu tun und übergiebt diesem auch keine Daten.
Lösungsvorschlag:
Leider gibt's bei window.open keine (mir bekannte) Möglichkeit, Daten über POST an das Programm zu senden. Ich hoffe, dass du dem Progi nicht allzuviele Daten übergeben willst (GET ist ja ziemlich beschränkt).
Aber mit window.open kann man ja Daten über GET übertragen:
z. B. window.open( 'ReturnSummary.asp?var1=test1&var2=test2', 'ReturnSummary', '...');
so, aber wie kriegen wir nun diese Daten an ReturnSummary.asp? - Indem wir das gesammte Formular einlesen und dann einen paramStr erstellen:
function buildParam {
var paramStr = '';
for ( i=0; i < document.forms[0].elements.length; i++ ) {
var element = document.forms[0].elements[i];
paramStr = paramStr + element.name + '=' + element.value + '&';
}
return paramStr;
}
so, dann müssen wir den onSubmit-Event ändern:
onSubmit=" window.open( 'progi.asp?'+buildParam, '...', '...' ); return false; "
Nu? - Was macht denn dieses Script?
Also, das Formular wird nie wirklich gesendet. Wenn es 'gesendet' wird, wird lediglich die methode window.open aufgerufen, die Formulardaten an das Progi angehängt und der eigentliche submit-Vorgang abgebrochen (return false;).
Was g'scheiteres fällt mir im Moment nicht ein.
Die geposteten Scripts sind wie immer nicht geprüft und ich lehne jegliche Haftung ab; bin jedoch für Rückfragen zur Stelle :-)
Viele Grüsse (und vielleicht hilft's dir ja was)
Philipp
Halihallo nochmals
so, und nun noch die lauffähige Version (da haben sich doch wirklich noch einige dumme Fehler eingeschlichen):
<html>
<head>
<script>
function getParamStr () {
var paramStr = '';
for ( i=0; i < document.forms[0].elements.length; i++ ) {
var element = document.forms[0].elements[i];
paramStr = paramStr + element.name + '=' + element.value + '&';
}
return paramStr;
}
function mySubmitOpener () {
var progi = 'test.html';
var paramStr = getParamStr();
var buildURL = progi + '?' + paramStr;
alert( buildURL ); // for test purposes only ;)
window.open( buildURL, '_blank', '' );
}
</script>
</head>
<body>
<form name="hello" action="" onSubmit="mySubmitOpener(); return false;">
<input type="text" name="myname" value="test" />
<input type="submit" value="test me, please" />
</form>
</body>
</html>
Viel Spass
Philipp
Hi Philipp,
Vielen, vielen Dank!
Das war wirklich super da Du mir so ausfuehrlich geantwortet hast!
Wuensche Dir einen schoenen Tag noch,
Gruss
Dalia
Halihallo nochmals
so, und nun noch die lauffähige Version (da haben sich doch wirklich noch einige dumme Fehler eingeschlichen):
test.html
<html>
<head>
<script>
function getParamStr () {
var paramStr = '';
for ( i=0; i < document.forms[0].elements.length; i++ ) {
var element = document.forms[0].elements[i];
paramStr = paramStr + element.name + '=' + element.value + '&';
}
return paramStr;
}
function mySubmitOpener () {
var progi = 'test.html';
var paramStr = getParamStr();
var buildURL = progi + '?' + paramStr;
alert( buildURL ); // for test purposes only ;)
window.open( buildURL, '_blank', '' );
}
</script>
</head>
<body>
<form name="hello" action="" onSubmit="mySubmitOpener(); return false;">
<input type="text" name="myname" value="test" />
<input type="submit" value="test me, please" />
</form>
</body>
</html>
Viel Spass
Philipp
Halihallo dalia
Vielen, vielen Dank!
Das war wirklich super da Du mir so ausfuehrlich geantwortet hast!
Wuensche Dir einen schoenen Tag noch,
Kein Problem... Hatte gestern Nacht keine Energie für eigene Projekte mehr, also hab ich halt hier im Forum nach einer geeigneten Frage gesucht ;)
Aber sag: Hatt's denn auch funktioniert?
Viele Grüsse
Philipp