Javascript无法找到HTML表单ID

时间:2014-12-29 17:15:38

标签: javascript html forms

我正在创建一个基本的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”。我已经习惯了很长一段时间,似乎无法弄清楚我做错了什么。有什么帮助吗?

2 个答案:

答案 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很糟糕,但这是另一场讨论。