表单验证未在提交时运行
Posted
技术标签:
【中文标题】表单验证未在提交时运行【英文标题】:Form validation not running onsubmit 【发布时间】:2012-11-20 05:39:05 【问题描述】:我正在尝试对 html 表单进行表单验证,以确保此人已填写了这两个字段。我在这里整理了一个 JSFiddle:
http://jsfiddle.net/yCqqj/
它以前对我有用,但我不知道现在发生了什么。我制作了一个 JSFiddle 以将其从我的网站中拉出,以确保没有其他内容与它发生冲突,但我现在意识到它在代码中。这两个字段分别是名称“电子邮件地址”和“名称”,看起来我正在正确检查它们的值。基本上,如果他们将任一字段留空,我正在寻找警报(而不是表单的提交)。感谢您帮助我找出问题所在。我很感激。
function ValidateForm()
var emailID=document.MailingList.emailaddress
var nameID=document.MailingList.Name
if ((nameID.value==null)||(nameID.value==""))
alert("Please Enter your Name");
nameID.focus();
return false;
if ((emailID.value==null)||(emailID.value==""))
alert("Please Enter your Email ID");
emailID.focus();
return false;
即使没有返回true,表单仍然提交。
【问题讨论】:
【参考方案1】:问题是您没有在Head
部分定义ValidateForm。
我已经编辑了 jsfiddle.check demo。
【讨论】:
你是说它应该在页面上的<head>
标签内吗?我已经在页面本身上尝试过,但由于某种原因它仍然无法正常工作?我对你的理解正确吗?
嗯,确实有效:jsfiddle.net/yCqqj/2。我可能需要检查页面上的冲突吗?
我在开发者工具中看到因为找不到 ValidateForm 而发生了错误。我只是将它移到了 head 标签并解决了。
是的开发者工具/firebug对于调试非常有用,下面来自chrome:“Uncaught ReferenceError: ValidateForm is not defined”
我想知道它是否与页面上的其他内容冲突。您是使用 Firefox 还是 Chrome 来检查 javascript?【参考方案2】:
我可以看到两个问题:
首先,什么是echeck?如果我拿走该代码,它将起作用。 其次,您不应该在控制 nameID.value 后返回。如果您这样做,您对 emailID.value 的控制将无法完成。
【讨论】:
即使是假的我不退货也不提交表格吗? 如果您返回 false,则不会提交表单。一旦你返回 true,它就会被提交。 正确,所以它会首先检查名称。如果名称在那里,那么它将检查电子邮件。如果电子邮件在那里,那么它将返回 true,对吗?还是我错了? 如果认为你的脚本应该是这样的: function ValidateForm() var emailID=document.MailingList.emailaddress var nameID=document.MailingList.Name if ((nameID.value==null)| |(nameID.value=="")) alert("请输入您的姓名") nameID.focus() return false if ((emailID.value==null)||(emailID.value=="") ) alert("请输入您的电子邮件 ID") emailID.focus() return false return true 看起来不太好...您应该只在代码的最后一行返回 true。【参考方案3】:要搭载 Behnam 的答案,这是因为 ValidateForm 没有像他所说的那样在头部定义。但这里是如何解决它:
在 jsfiddle 中,在 Frameworks & Extensions 的左上方区域,将其设置为 no-wrap 。然后更新并设置为基础以保存您的更改。
【讨论】:
以上是关于表单验证未在提交时运行的主要内容,如果未能解决你的问题,请参考以下文章
html/javascript onsubmit 事件未在表单提交上调用以验证表单