2017-02-22 2 views
-1

im html Körper So validiert Ich habe beideWarum ist HTML-Eingabefeld nicht vor Post

<script type="text/javascript"> 
function validateMelco(form) { 
    toReturn=true; 
    if (form.melco.value.length==0) { 
    alert("Please enter your Melco serial no"); 
    toReturn=false; 
    } 
    return toReturn; 
} 
</script> 

und

<tr> 
<td valign="top"><b>SongKong for Melco (Melco discount)</b> 
</td> 
<td valign="top">£40 ($50 USD) 
</td> 
<td valign="top"> 
<form name="paypalpro" action="https://www.paypal.com/cgi-bin/webscr" onsubmit="return validateMelco()" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="5UC5NAYZ6JZR8"> 
<input alt="PayPal" type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif" border="0" name="submit"> 
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1"> 
Melco Serial No:<input type="textfield" name="melco"/> 
</form> 
</td> 
</tr> 

Noch ein Benutzer auf die Schaltfläche klicken können, ohne etwas in den Eingang der Eingabe Feld, keine Warnung wird angezeigt und das Formular wird gebucht. Warum tritt die JavaScript-Validierung nicht ein?

+0

Warum überprüfen Sie die Länge des Werts, wenn Sie nur überprüfen können, ob der Wert leer ist? Scheint wie ein unnötiger Teil. – Slime

+0

@AmericanSlime die echte Validierung wurde noch nicht durchgeführt, aber das Problem war, warum die Validierung (was immer es ist) nicht aufgerufen wurde. –

Antwort

1

Ändern Sie die Zeile

<form name="paypalpro" action="https://www.paypal.com/cgi-bin/webscr" onsubmit="return validateMelco()" method="post"> 

zu

<form name="paypalpro" action="https://www.paypal.com/cgi-bin/webscr" onsubmit="return validateMelco(this)" method="post"> 
+0

ah, danke jetzt funktioniert –

1

Sie den Aufruf der Funktion ohne Argumente, aber es erwartet ein Argument, das die Form identifiziert. Es kann also nichts machen.

1
<!DOCTYPE html> 
<html> 
<body> 

<p>When you submit the form, a function is triggered which alerts some text.</p> 

<tr> 
<td valign="top"><b>SongKong for Melco (Melco discount)</b> 
</td> 
<td valign="top">£40 ($50 USD) 
</td> 
<td valign="top"> 
<form name="paypalpro" action="https://www.paypal.com/cgi-bin/webscr" onsubmit="return validateMelco()" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="5UC5NAYZ6JZR8"> 
<input alt="PayPal" type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif" border="0" name="submit"> 
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1"> 
Melco Serial No:<input type="textfield" name="melco"/> 
</form> 
</td> 
</tr> 

<script> 
function validateMelco(form) { 
    toReturn=true; 

    if (document.forms["paypalpro"]["melco"].value == "") { 
    alert("Please enter your Melco serial no"); 
    toReturn=false; 
    } 
    return toReturn; 
} 
</script> 

</body> 
</html> 

Das Formularobjekt wurde nicht an die Funktion "validateMelco()" übergeben, um auf die Formularelemente zuzugreifen. Also habe ich das JavaScript-Dokument-Objekt verwendet, um mit 'document.forms ["paypalpro"] ["melco"] auf das Formular zuzugreifen.

+0

nicht funktionieren, wenn 'validateMelco' ein Formular als Parameter erwartet, und Ihre' onsubmit' bietet keinen Formularparameter –

+1

Ich benutze das DOM so keine Notwendigkeit des Parameters. Der Code funktioniert so wie er sollte. :) – Ayush

+0

Nur Dumping-Code ist nicht hilfreich. Erkläre das Problem und erkläre dann die Lösung. –

Verwandte Themen