Kreuznacher
Newbie
- Registriert
- Jan. 2008
- Beiträge
- 1
Ich habe auf http://www.matterdaddy.com/scripts/market/ ein gutes Freeware-Programm für ein Anzeigen-Portal gefunden, welches ich auf meiner Homepage einsetzen möchte.
Allerding funktioniert die einprogrammierte function MM_validateForm() nicht und ich finde den Fehler nicht!
Wenn alles ok ist, sollen die Werte aus der Form an eine controller.php übergeben werden - ansonsten die Form mit den eingegebenen Werte und dem Fehlerhinweis nochmals erscheinen - hier das Script in Kurzform:
_______________________________________________________________
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' Geben Sie bitte eine e-Mail-Adresse an.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' muss eine Zahl enthalten.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' muss eine Zahl zwischen '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' ist erforderlich.\n'; }
} if (errors) alert('Die Datenbank meldet folgenden Fehler:\n'+errors);
document.MM_returnValue = (errors == '');
}
function showLoading(){
document.getElementById('loading').style.display='';
}
....
<form action="controller.php" method="post" enctype="multipart/form-data" name="form1" id="form1" onsubmit="showLoading();MM_validateForm('Title_','','R','EmailAddr','','R','Description','','R');return document.MM_returnValue">
....
<input name="Title_" type="text" size="50" value="" id='md_title' /></td>
</tr>
<tr>
....
<td align="right" valign="top" nowrap="nowrap"><span class="md_label">Text</span></td>
<td><textarea name="Description" cols="60" rows="6" id='md_description'></textarea></td>
</tr>
....
<input name="EmailAddr" type="text" id="md_email2" size="40" maxlength="90" />
.....
<input name="uploadform" type="button" value="aufgeben" id="md_submitButton" class="md_bigButton" onclick="this.form.submit()" />
<input type="hidden" name="op" value="newItem" />
________________________________________________________________
Trotz falscher bzw. fehlender Eingabe springt das Prog direkt auf die Bestätigung der Eingabe, welche über controler.php angezeigt wird!
Auf dieser Seite kann man sich das Programm in Funktion ansehen und auch den entsprechenden Fehler bei Eingabe sehen: http://market.stanking.org/
Ich glaube, daß der Fehler in der Zeile:
______________
<input name="uploadform" type="button" value="aufgeben" id="md_submitButton" class="md_bigButton" onclick="this.form.submit()" />
<input type="hidden" name="op" value="newItem" />
______________
in onclick="this.form.submit() liegt, denn vergleichbare MM-Validation in einem anderen Programm funktioniert, wenn die Daten gleich über submit und nicht an ein anderes php-Programm übergeben werden, also:
______________
<input name="Submit" type="submit" onClick="MM_validateForm('Title_','','R','EmailAddr','','R','Description','','R');return document.MM_returnValue" value="Submit">
______________
Ich habe schon alles probiert - wahrscheinlich ist es ja nur ein Fehler, den ich einfach übersehe - von daher wäre ich für eine hinweisende Hilfe dankbar!
Allerding funktioniert die einprogrammierte function MM_validateForm() nicht und ich finde den Fehler nicht!
Wenn alles ok ist, sollen die Werte aus der Form an eine controller.php übergeben werden - ansonsten die Form mit den eingegebenen Werte und dem Fehlerhinweis nochmals erscheinen - hier das Script in Kurzform:
_______________________________________________________________
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' Geben Sie bitte eine e-Mail-Adresse an.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' muss eine Zahl enthalten.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' muss eine Zahl zwischen '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' ist erforderlich.\n'; }
} if (errors) alert('Die Datenbank meldet folgenden Fehler:\n'+errors);
document.MM_returnValue = (errors == '');
}
function showLoading(){
document.getElementById('loading').style.display='';
}
....
<form action="controller.php" method="post" enctype="multipart/form-data" name="form1" id="form1" onsubmit="showLoading();MM_validateForm('Title_','','R','EmailAddr','','R','Description','','R');return document.MM_returnValue">
....
<input name="Title_" type="text" size="50" value="" id='md_title' /></td>
</tr>
<tr>
....
<td align="right" valign="top" nowrap="nowrap"><span class="md_label">Text</span></td>
<td><textarea name="Description" cols="60" rows="6" id='md_description'></textarea></td>
</tr>
....
<input name="EmailAddr" type="text" id="md_email2" size="40" maxlength="90" />
.....
<input name="uploadform" type="button" value="aufgeben" id="md_submitButton" class="md_bigButton" onclick="this.form.submit()" />
<input type="hidden" name="op" value="newItem" />
________________________________________________________________
Trotz falscher bzw. fehlender Eingabe springt das Prog direkt auf die Bestätigung der Eingabe, welche über controler.php angezeigt wird!
Auf dieser Seite kann man sich das Programm in Funktion ansehen und auch den entsprechenden Fehler bei Eingabe sehen: http://market.stanking.org/
Ich glaube, daß der Fehler in der Zeile:
______________
<input name="uploadform" type="button" value="aufgeben" id="md_submitButton" class="md_bigButton" onclick="this.form.submit()" />
<input type="hidden" name="op" value="newItem" />
______________
in onclick="this.form.submit() liegt, denn vergleichbare MM-Validation in einem anderen Programm funktioniert, wenn die Daten gleich über submit und nicht an ein anderes php-Programm übergeben werden, also:
______________
<input name="Submit" type="submit" onClick="MM_validateForm('Title_','','R','EmailAddr','','R','Description','','R');return document.MM_returnValue" value="Submit">
______________
Ich habe schon alles probiert - wahrscheinlich ist es ja nur ein Fehler, den ich einfach übersehe - von daher wäre ich für eine hinweisende Hilfe dankbar!