knifflige Formularauswertung
Markus
- html
0 Harlequin0 Markus
0 Patrick Andrieu
Hallo zusammen
ich bau grade an ner formularabfrage in einem <div> rum.
in den container wird über javascript und ne php datei eine andere htmldatei über ein menü nachgeladen.und zwar in den container "content"
html:
<div class="menucontainer">
<p class="menutitle">Menü</p>
<a class="menu" href="javascript:void(0);" onclick="sndReq('getSeite1');">Seite1</a>
</div>
<div id="content">
</div>
php:
<?php
switch($_REQUEST['action']) {
default:
case 'getSeit1':
$filename = 'seite1.html';
break;
}
$handle = fopen($filename, 'r');
$content = fread($handle, filesize($filename));
fclose ($handle);
echo 'content|'.$content;
?>
javascript:
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sndReq(action) {
http.open('get', 'output.php?action='+action);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();
if(response.indexOf('|' != -1)) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
tja so weit so gut das ding funktioniert ja noch einwandfrei.
für alle die sowas mal ausprobieren möchten: die css datei muss auf der indexseite eingebunden werden.
nun zu meinem problem:
auf einer dieser seiten hab ich ein forumlar mit X auszuwertenden daten. klarerweise gehts darum ob der user die notwendigen daten eingegeben hat und wenn ja soll ne vorschau erstellt werden.
das teil hab ich noch nicht soll aber das kleinste problem darstellen.
nur das blöde ist das laut xhtml1.0 kein "name" attribute mehr vergeben werden darf (für den form-tag)....also nehm ich das id.
bei einer js abfrage krieg ich aber dauernd laufzeitfehler.
so müsste es doch gehen:
das script im head:
function chkFormular () {
if (document.forms.Formular.nachname.value == "") {
alert("Bitte Ihren Namen eingeben!");
document.forms.Formular.nachname.focus();
return false;
}
dann im body:
<form id="Formular" action="versenden.php" method="post" onsubmit="return chkFormular()">
<p style="font-size:10px;margin-bottom:0px;font-weight:bold;"><label for="nachname">Nachname:*</label></p>
<p style="margin-top:10px;white-space:nowrap;"><input type="submit" value="Senden" /><input type="reset" value="Abbrechen" /></p>
</form>
nur tritt jetzt andauernd ein laufzeitfehler auf wo er auf der index.html nicht klar kommt und die datei versenden php komischerweise auf jedenfall aufgerufen und
ich würde mich über einen anstoss freuen wie das entweder mit php oder js gelöst werden kann und zwar so dass es xhtml1.0 strict ist.
Vielen lieben Dank schonmal
Markus
Yerf!
nur das blöde ist das laut xhtml1.0 kein "name" attribute mehr vergeben werden darf (für den form-tag)....also nehm ich das id.
Das wird wohl nicht gehen... ein Form kann nur über den Name so angesprochen werden. Evtl. geht es aber mit GetElementById(), die Elementreferenz, die man erhält, dürfte identisch zu dem anderen Weg sein.
ich würde mich über einen anstoss freuen wie das entweder mit php oder js gelöst werden kann und zwar so dass es xhtml1.0 strict ist.
Oder aber man nimmt einfach xhtml1.0 transitional. Ist doch eigentlich auch nicht weiter schlimm. Vor allem wenn es diesen 'Bug' nicht hat (deshalb unter anderem gibts auch HTML4.01, im 4er war das Attribut auch weg...)
Gruß,
Harlequin
hey ihr beiden :)
danke für eure rasche antwort.
@Patrick Andrieu
ja der teil ist neu getippt.das feld existiert. :)
@Harlequin
doch es funktioniert ;)
---------> hab die lösung schon gefunden....ist mir unterm tippen gekommen:
der headabscnitt der einzelnen seiten wird ja nicht nachgeladen *kopfgreif*
also musste ich in der index.html das script definieren.
*spring* juchu jetzt gehts.wenn ich das mit dem container(vorschau) auch noch hinkrieg hab ich das schlimmste überstanden *g*
Danke nochmal :))
Hallo Markus!
dann im body:
<form id="Formular" action="versenden.php" method="post" onsubmit="return chkFormular()">
<p style="font-size:10px;margin-bottom:0px;font-weight:bold;"><label for="nachname">Nachname:*</label></p>
<p style="margin-top:10px;white-space:nowrap;"><input type="submit" value="Senden" /><input type="reset" value="Abbrechen" /></p>
</form>nur tritt jetzt andauernd ein laufzeitfehler auf wo er auf der index.html nicht klar kommt und die datei versenden php komischerweise auf jedenfall aufgerufen und
Hast Du das Formular hier von deinem Quelltext kopiert oder neu getippt? Wo ist das input-Feld für die Angabe des Nachnamens?
Viele Grüße aus Frankfurt/Main,
Patrick