通过Javascript停止CGI电子邮件脚本?

时间:2012-04-27 23:34:03

标签: javascript html forms validation

    <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>

我在HTML中有这个表单,以及标题中定义的这个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>

我的问题是,当我调用该函数时,如果没有填写所有字段,我不希望发送电子邮件。但是,就目前的情况而言,无论如何都会发送一封电子邮件。有没有办法从javascript运行停止CGI脚本(这是表单方法中的操作)?

1 个答案:

答案 0 :(得分:1)

return false添加到您的函数末尾。在<form>标记中添加onSubmit="return testResults()"(删除您现在调用的方式)。 return false标记的onSubmit属性中的<form>会阻止表单提交。