Javascript表单验证在IE中不起作用

Javascript表单验证在IE中不起作用,javascript,forms,validation,internet-explorer-9,Javascript,Forms,Validation,Internet Explorer 9,我有一个非常小的表单和一个javascript来验证它。它检查的唯一字段是电子邮件地址,以查看其是否有效 当我在Chrome中使用表单时,脚本按预期工作(提交表单,除非电子邮件无效) 当我在IE9中加载页面时,无论电子邮件字段是否完成,表单都不会提交 查看IE中的调试控制台,我的错误是: 属性“submitData”的值为null或未定义,不是函数对象 我的表单如下所示: <form id="contactform" action="http://localhost/test/wp-con

我有一个非常小的表单和一个javascript来验证它。它检查的唯一字段是电子邮件地址,以查看其是否有效

当我在Chrome中使用表单时,脚本按预期工作(提交表单,除非电子邮件无效)

当我在IE9中加载页面时,无论电子邮件字段是否完成,表单都不会提交

查看IE中的调试控制台,我的错误是:

属性“submitData”的值为null或未定义,不是函数对象

我的表单如下所示:

<form id="contactform" action="http://localhost/test/wp-content/themes/mytheme/enquiry/enquiry-handler.php" enctype="multipart/form-data" method="POST" onsubmit="return validateForm()">
<label for="email">Shipping From?</label>
<select name="from" class="quoteboxSelect">
<option value="0">Please Choose</option>    
<option value="51\">United Kingdom<option value="52\">France<option value="53\">Germany<option value="54\">Afghanistan</select><br/ >
<label for="to">Shipping To?</label>
<select name="to">
<option value="0">Please Choose</option>
 <option value="51\">United Kingdom<option value="52\">France<option value="53\">Germany<option value="54\">Afghanistan</select><br/ >

<label for="what">Shipping What?</label>
<select name="what">
<option value="0">Please Choose</option>
<option value="26\">Excess Baggage<option value="27\">International Removal<option value="28\">Car Shipping<option value="29\">Freight</select><br/ >
<label for="email">Email:</label><br/>
<input name="email" size="20" /><br/>
<button class="" onClick="submitData();" value="Send request">Get Quote</button>

</form>
<script>
function validateForm()
{
var x=document.forms["contactform"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Please enter a valid email address!");
  return false;
  }
return true;
}
</script>

从哪里发货?
请选择
阿富汗联合王国
运送到?
请选择
阿富汗联合王国
运输什么?
请选择
超额行李国际搬运汽车运输运费
电子邮件:

获得报价
我的javascript如下所示:

<form id="contactform" action="http://localhost/test/wp-content/themes/mytheme/enquiry/enquiry-handler.php" enctype="multipart/form-data" method="POST" onsubmit="return validateForm()">
<label for="email">Shipping From?</label>
<select name="from" class="quoteboxSelect">
<option value="0">Please Choose</option>    
<option value="51\">United Kingdom<option value="52\">France<option value="53\">Germany<option value="54\">Afghanistan</select><br/ >
<label for="to">Shipping To?</label>
<select name="to">
<option value="0">Please Choose</option>
 <option value="51\">United Kingdom<option value="52\">France<option value="53\">Germany<option value="54\">Afghanistan</select><br/ >

<label for="what">Shipping What?</label>
<select name="what">
<option value="0">Please Choose</option>
<option value="26\">Excess Baggage<option value="27\">International Removal<option value="28\">Car Shipping<option value="29\">Freight</select><br/ >
<label for="email">Email:</label><br/>
<input name="email" size="20" /><br/>
<button class="" onClick="submitData();" value="Send request">Get Quote</button>

</form>
<script>
function validateForm()
{
var x=document.forms["contactform"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  alert("Please enter a valid email address!");
  return false;
  }
return true;
}
</script>

函数validateForm()
{
var x=document.forms[“contactform”][“email”]。值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

如果(atpos显示表单已从使用绑定到提交按钮的javascript函数更改为使用绑定到表单本身的提交处理程序的验证方法

尝试更改:

<button class="" onClick="submitData();" value="Send request">Get Quote</button>
获取报价

获取报价

所以,你的问题是你的
应该有一个
id=
属性

我是如何发现问题的:

  • 我创建了一个JSFIDLE来测试这一点:
  • 在IE中运行,浏览器模式设置为IE9(F12)
  • 然后我在F12控制台中看到错误
    SCRIPT5009:“submitData”未定义
  • 然后我发现了这个问题: