表单验证未定义或“替换”的空引用

时间:2013-11-10 22:32:13

标签: javascript html validation

我正在尝试使用以下代码验证一个简单的表单,并且我不断收到以下错误:错误:无法获取未定义或空引用的属性“replace”。我究竟做错了什么?

JavaScript的:

var test = function(){
        var e = document.getElementsByTagName("*");
        for (var i = 0; i < e.length; i++){
            var t = e[i].getAttribute("type");
            var n = e[i].tagName;
            var v = e[i].value.replace(" ", "");
            if (v === "" && (n === "input" && (t === "text" || t === "tel" || t === "email") || n === "select")){
                alert("Please Fill Out All Fields");
                return false;
            }
        }
    }

HTML:

<form id="form1" runat="server" onsubmit="test();">
<div style="padding-left:50px; padding-top:50px;">
    <div>
        <input type="text" />
        <br />
        <br />
        <input type="text" />
        <br />
        <br />
        <button type="submit" id="submit">Submit</button>
    </div>
</div>
</form>

1 个答案:

答案 0 :(得分:1)

该行:

> var e = document.getElementsByTagName("*");

将返回文档中每个元素的NodeList。并非每个元素都具有value属性,因此当您执行以下操作时:

> var v = e[i].value.replace(" ", "");

您将未定义的属性视为字符串,而不是。

要验证表单控件,请使用以下内容:

var elements = document.forms['form1'].elements;

以便elements仅包含 form1 形式的控件。