2017-05-17 34 views
0

下面的代码:为什么JavaScript“req”验证程序无法正常工作?

<script language="JavaScript"> 
 
    var frmvalidator = new Validator("contactform"); 
 
    frmvalidator.addValidation("name","required","Please provide your name"); 
 
    frmvalidator.addValidation("email","required","Please provide your email"); 
 
    frmvalidator.addValidation("email","email", 
 
    "Please enter a valid email address"); 
 
</script> 
 

 
<form method="post" name="contactform" action="contact-form-handler.php"> 
 
\t <div class="row uniform 50%"> 
 
\t \t <div class="6u 12u(mobilep)"> 
 
\t \t <input type="text" name="name" id="name" placeholder="Name" /> 
 
\t \t </div> 
 
\t \t <div class="6u 12u(mobilep)"> 
 
\t \t \t <input type="email" name="email" id="Wemail" placeholder="Email" /> 
 
\t </div> 
 
\t </div> 
 
    <div class="row uniform 50%"> 
 
\t \t <div class="12u"> 
 
\t \t <input type="text" name="subject" id="subject" placeholder="Subject" /> 
 
\t </div> 
 
\t </div> 
 
\t <div class="row uniform 50%"> 
 
\t \t <div class="12u"> 
 
\t \t \t <textarea name="message" id="message" placeholder="Enter your message" rows="6"> 
 
     </textarea> 
 
\t </div> 
 
\t </div> 
 
\t <div class="row uniform"> 
 
\t \t <div class="12u"> 
 
\t \t \t <ul class="actions align-center"> 
 
\t \t \t <li><input type="submit" value="Send Message" /></li> 
 
\t \t </ul> 
 
\t </div> 
 
    </div> 
 
</form>

这里的控制台错误:

{ 
    "message": "Uncaught ReferenceError: Validator is not defined", 
    "filename": "https://stacksnippets.net/js", 
    "lineno": 12, 
    "colno": 27 
} 

“电子邮件” 验证功能在这里看到:
Screenshot of JS validation

但是, “必需”有效主持人不工作。我最初尝试了“req”,但那也没用。我认为重复的ID和名称值可能是错误的,但我改变了他们无济于事。我很困惑,为什么JS不会应用所需的验证器。我应该改变什么才能使此验证工作?

编辑:我使用this教程作为指导。 Validator对象位于可下载的.js文件中。
幸运的是,评论和以前的答案让我朝着正确的方向前进。请参阅下面的确切答案。

+0

请告诉我们您正在使用哪个库进行验证。没有内置的JavaScript对象'Validator'。 –

+0

我并不担心图书馆(我应该是)因为我正在学习一个教程。感谢让我更加关注它! – PujitM

回答

0

所以我犯的错误很简单。
不是将gen_validatorv4.js脚本的HTML文件的标题相反,我把它放在了<body>元素的底部,</body>之前。

出于某种原因(我不明白为什么 - 注释说明这将是真棒),放置脚本固定错误的标题。

解决方案:将验证器脚本放在HTML的标题中,而不是放在主体的末尾。

谢谢,所以!

+0

这是因为在标题中的所有内容都编译和执行DOMReady事件之前,在它的编译后脚本 它是也是一个很好的做法,可以将大部分的javascript(所有不重要的东西)放到文档的末尾,这样用户就可以更快地获得内容(无需在呈现内容之前下载所有的js)。 – sznowicki

0

我不知道你想做什么,但Validor并不似乎是一个vanilla.js对象。

如果您尝试使用原生html5表单验证,您只需将正确的属性添加到表单元素。

对于电子邮件的输入将是: <input type="email" required="required" .../>

这将告诉浏览器来验证此域作为一个电子邮件,该区域是强制性的。

并非所有的浏览器都支持这个(主要是一些很旧的),但你需要服务器验证无论如何,所以现在它可能是没有在JavaScript中的自定义实现什么好主意。

如果您需要它,请在github上找到一些javascript表单验证库。有很多。

或建立自己一个使用onchange事件或```onsubmit``对整个表单验证。

p.s. <script language="JavaScript">语言已过时,类型也。很好。

+0

这很有帮助! – PujitM

+0

@PujitM然后请按照SO礼仪和upvote你找到有用的答案或标记为“答案”,如果它回答你的问题。 – sznowicki

+0

我上传之前,我评论 - 我只是没有足够的代表它显示:( – PujitM

相关问题