2012-04-27 3 views
0
<form name="post" ACTION="http://epansoftware.com/cgi-sys/cgiemail/cgi-bin/cgimailx.txt" accept-charset="UTF-8" METHOD="post"> 
    <fieldset> 
    <legend>OR LEAVE US A MESSAGE HERE</legend> 
    <label for="name" class="fixedwidth">Name</label> 
    <input type="text" Name="name" id="name" value="" size="50"/><br /> 
    <label for="company" class="fixedwidth">Company</label> 
    <input type="text" Name="company" id="company" value="" size="50"/><br /> 
    <label for="email" class="fixedwidth">Email</label> 
    <input type="text" Name="email" id="email" size="50"/><br /> 
    <label for="subject" class="fixedwidth">Subject</label> 
    <select name="subject" id="subject"> 
    <option>Support</option> 
    <option>Sales Inquiry</option> 
    <option>Custom Database</option> 
    </select><br /> 
    <label for="message" class="fixedwidth">Message</label> 
    <textarea type="text" Name="message" id="message" cols="40" rows="20"></textarea> 
    <div class="buttonarea"> 
    <input type="submit" name="submit" value="Submit" onClick="testResults()"> 
    <INPUT TYPE="hidden" NAME="success" VALUE="http://www.epansoftware.com"> 
    </div> 
    </fieldset> 
    </form> 

Je possède ce formulaire en HTML, ainsi que cette fonction javascript définie dans l'en-tête:Arrêt du script d'email CGI via Javascript?

<script language="javascript"> 
    function testResults() 
    { 
    var name = document.getElementById("name").value; 
    var email = document.getElementById("email").value; 
    var message = document.getElementById("message").value; 
    var fields = new Array(); 
    fields[0] = name; 
    fields[1] = email; 
    fields[2] = message; 
    var tester = /[A-z]|[0-9]/; 
    if(! tester.test(fields[0])) 
    { 
     alert("Please type information in all the required fields!"); 
     return false; 
    } 
    else if(! tester.test(fields[1])) 
    { 
     alert("Please type information in all the required fields!"); 
    } 
    else if(! tester.test(fields[2])) 
    { 
     alert("Please type information in all the required fields!"); 
    } 
    else if(tester.test(fields[0]) && tester.test(fields[1]) && tester.test(fields[2])) 
    { 
     alert("Your message has been sent!"); 
    } 
    else 
    { 
     alert("ERROR 5: Regex Error"); 
    } 
    } 
</script> 

Mon problème est que quand je l'appelle la fonction, si tous les champs ne sont pas remplis, Je ne veux pas d'e-mail envoyé. Cependant, la façon dont il est maintenant, un email sera envoyé, peu importe quoi. Est-il possible d'arrêter le script CGI (c'est ce que fait l'action dans la méthode formulaire) depuis le javascript?

Répondre

1

Ajoutez return false à la fin de votre fonction. Dans votre balise <form>, ajoutez onSubmit="return testResults()" (supprimez la façon dont vous l'appelez maintenant). Le return false dans l'attribut onSubmit de la balise <form> empêche le formulaire de soumettre.

+0

Docum. Onsubmit: http://msdn.microsoft.com/en-us/library/ie/ms536972(v=vs.85).aspx –

+0

Ne fonctionnait pas avec 'onSubmit =" return testResults() "' , mais je l'ai eu avec 'onClick =" return testResults() "' Merci – slinky773