我正在创建一个基本的HTML表单,以及一个在“名字”字段中查找任何输入值的Javascript表单验证程序。我遇到的问题是似乎没有什么工作可以返回名字表单值以在JS中检查它。
相关HTML:
<form id="form1" name="formName">
First name:<br>
<input type="text" id="fn" >
<br>
Last name:<br>
<input type="text" name="ln" >
<br>
Email address: <span style="color:red">(required)</span><br>
<input type="text" name="email" >
<br><br>
<button onclick="validate()">Submit</button>
</form>
我的JS:
var validate = function (){
var x = document.getElementById("fn").value;
if (x == null || "" || "undefined"){
alert("Please fill out your first name");
return false;
}
kickoff();
}
var kickoff = function () {
var visitor = document.forms["form1"].fn.value;
alert("Thanks for filling out, " + visitor +"\n");
return visitor;
};
这是JSFiddle。
我的X变量似乎永远不会到达,并在我提交页面时不断返回“undefined”。我已经习惯了很长一段时间,似乎无法弄清楚我做错了什么。有什么帮助吗?
答案 0 :(得分:1)
这并不代表你的想法:
if (x == null || "" || "undefined") {
也可以写成:
if ((x == null) || // might be false
"" || // will be false
"undefined" // will be true
) {
因此if
总是为真。
你真的需要:
if (! x) {
答案 1 :(得分:0)
除语法问题外,该方法也超出了范围。在解决问题之前,您甚至无法使用条件调试问题。
您可以在DOM中更高的位置内嵌脚本,也可以直接在validate
对象上定义window
:
window.validate = function () {
http://jsfiddle.net/frg37t3u/5/
这两种情况都不理想,你应该知道。 Globals很糟糕,但这是另一场讨论。