我的javascript表单验证在Chrome中工作得很好,但在Firefox中却不行
javascript:我的javascript表单验证在Chrome中工作得很好,但在Firefox中却不行,javascript,firefox,google-chrome,Javascript,Firefox,Google Chrome,javascript: function validateForm() { var x=document.forms["newsletter"]["agree"].value; if (newsletter.agree.checked != 1) { alert("Checkbox must be checked"); return false; } var y=document.forms["newslette
function validateForm()
{
var x=document.forms["newsletter"]["agree"].value;
if (newsletter.agree.checked != 1)
{
alert("Checkbox must be checked");
return false;
}
var y=document.forms["newsletter"]["email"].value;
var atpos=y.indexOf("@");
var dotpos=y.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=y.length)
{
alert("Not a valid e-mail address");
return false;
}
else
{
return true;
}
}
函数validateForm()
{
var x=文件.表格[“通讯”][“同意”].价值;
如果(newsletter.agree.checked!=1)
{
警告(“必须选中复选框”);
返回false;
}
var y=文件。表格[“新闻通讯”][“电子邮件”]。值;
var atpos=y.indexOf(“@”);
var dotpos=y.lastIndexOf(“.”);
如果(atpos我想它可能会帮助你
<div id="signup">
<form id="newsletter" action="" method="get" onsubmit="return validateForm()">
<fieldset>
<p>Email: <input type="text" name="email" id="email" size="35"/>
Please send me the monthly newsletter
<input type="checkbox" checked="checked" name="agree" id="agree" value=""/>
<br/>
<input type="submit" value="Signup"/></p>
</fieldset>
</form>
</div><!-- signup -->
function validateForm()
{
var agreeEl = document.getElementById("agree");
if (agreeEl.checked != 1)
{
alert("Checkbox must be checked");
return false;
}
var emailEl = document.getElementById("email");
var atpos = emailEl.value.indexOf("@");
var dotpos = emailEl.value.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= y.length) {
alert("Not a valid e-mail address");
return false;
}
return true;
}
电邮:
请把月刊寄给我
函数validateForm()
{
var agreel=document.getElementById(“agree”);
如果(已选中协议!=1)
{
警告(“必须选中复选框”);
返回false;
}
var emailEl=document.getElementById(“电子邮件”);
var atpos=emailEl.value.indexOf(“@”);
var dotpos=emailEl.value.lastIndexOf(“.”);
if(atpos<1 | | dotpos=y.length){
警报(“不是有效的电子邮件地址”);
返回false;
}
返回true;
}
首先,您使用“get”而不是“post”提交表单有什么原因吗?当我试图使用“get”提交表单时,Chrome向我抱怨
我在上设置了一个简单的fiddle来测试您的表单。如果我使用JQuery来处理表单提交,而不是您的“onSubmit”,那么一切都可以正常工作。因此,我查看了onSubmit的情况,发现了以下线程:
尝试的事项:
- 确保使用post而不是get
- 使用“onSubmit”而不是“onSubmit”
- 使用
如果失败,我建议您自己用Javascript处理submit
事件,而不是使用onSubmit
,这在Chrome中似乎有点古怪。您是否查看了错误控制台?您的validateForm处理程序假设window.newsletter
是一个表单元素(而不是使用document.forms)[“newsletter”]在第一个if()
)中,它不在Firefox的标准模式中。因此,该行抛出,如果onsubmit处理程序抛出,则表单将继续并提交。但当然,错误控制台报告处理程序抛出了….函数validateForm()
function validateForm()
{
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
}
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
</form>
{
var x=document.forms[“myForm”][“email”].value;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);
如果(Atpos如果你在头上敲了5个小时后还没弄明白,休息一下。你的两段代码在这里运行得很好,你能提供完整的源代码吗?不,这个脚本在Firefox中仍然不起作用。感谢你的帮助,你使用哪一版本的Firefox?我已经在Firefox 10.0.1上测试过了。UPD:我将Firefox更新为12。0,它也可以正常工作。请提供更多信息。Firefox 12。我的朋友,也在使用12.0,也有同样的问题。编辑:当我在Firefox中单击“注册”并打开错误控制台时,会显示一个错误,因为未定义新闻稿。你真的测试了我的代码吗?因为我没有使用表单的全局变量(“新闻稿”)和你一样。我为每个字段添加了标识符,并通过id获取它们的值。请复制粘贴我的代码(html和javascript)到你的项目和测试。它应该能正常工作。哇,对不起,你是对的。我缺少电子邮件的id属性,所以当它寻找id时,什么都没有。非常感谢这个答案!谢谢。我可能只是尝试用JavaScript处理它,而不是使用html onsubmit或onclick属性。对不起,我不太了解另外,请您进一步解释一下好吗?用document.forms[“newsletter”][“agree”]替换newsletter.agree.checked
function validateForm()
{
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
}
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
</form>