Javascript 表单验证未在提交时运行

Javascript 表单验证未在提交时运行,javascript,forms,function,onsubmit,Javascript,Forms,Function,Onsubmit,我试图在HTML表单上运行表单验证,以确保该人已填写了这两个字段。我在这里整理了一个JSFIDLE: 它以前对我有效,我不知道现在发生了什么。我制作了一个JSFiddle,将其从我的站点中拉出来,以确保没有其他内容与之冲突,但我现在意识到这是代码中的内容。这两个字段分别是name“emailaddress”和“name”,看起来我正在正确检查它们的值。基本上,我是在寻找一个警告(而不是表单的提交),如果他们将任一字段留空。谢谢你帮我找到这个问题。我很感激 function ValidateFo

我试图在HTML表单上运行表单验证,以确保该人已填写了这两个字段。我在这里整理了一个JSFIDLE:

它以前对我有效,我不知道现在发生了什么。我制作了一个JSFiddle,将其从我的站点中拉出来,以确保没有其他内容与之冲突,但我现在意识到这是代码中的内容。这两个字段分别是name“emailaddress”和“name”,看起来我正在正确检查它们的值。基本上,我是在寻找一个警告(而不是表单的提交),如果他们将任一字段留空。谢谢你帮我找到这个问题。我很感激

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,表单仍会提交。

问题是您没有在
标题
部分定义ValidateForm。 我已经编辑了jsfiddle.check。

我可以看到两个问题:

首先,什么是echeck?如果我把代码拿走,它会工作的。
其次,您不应该在控制nameID.value之后返回。如果您这样做,您对emailID.value的控制将无法完成。

以Behnam的回答为基础,这是因为ValidateForm没有像他所说的那样在head部分中定义。但以下是解决方法:

在jsfiddle中,在Frameworks&Extensions的左上方区域,将其设置为no wrap。然后更新并设置为基础以保存更改


您是说它应该在页面上的
标记中吗?我已经在页面上尝试过了,但由于某种原因,它仍然不起作用?我对你的理解正确吗?嗯,是的,这很有效。我可能需要检查页面上是否存在冲突?我在开发人员工具中看到,由于找不到ValidateForm而发生错误。我刚刚将其移动到head标记并解决了问题。是的,开发人员工具/firebug对调试非常有用,以下来自chrome:“未捕获引用错误:未定义ValidateForm”我想知道它是否与页面上的其他内容冲突。您是否使用Firefox或Chrome检查Javascript?如果我不返回表单,即使返回值为false,它是否会提交表单?如果返回值为false,表单将不会提交。一旦您返回true,它将被提交。对,因此它将首先检查名称。如果名字在那里,它就会检查电子邮件。如果电子邮件在那里,那么它将返回true,对吗?或者我错了吗?如果你认为你的脚本应该是这样的:函数ValidateForm(){var emailID=document.MailingList.emailaddress var nameID=document.MailingList.Name If((nameID.value==null)| |(nameID.value==“”){alert(“请输入你的名字”)nameID.focus()返回false}如果((emailID.value==null)|(emailID.value==“”){alert(“请输入您的电子邮件ID”)emailID.focus()返回false}返回true}看起来不太好。。。您应该只在代码的最后一行返回true。