检查表单输入是否存在

时间:2012-05-15 15:06:49

标签: javascript

我想检查用户填写输入名称“field1”时是否存在名为“field2”的输入标记。我是通过使用field1的onchange标记上的input事件执行JavaScript函数来实现的。 (我正在使用警告框进行测试。)如果field2不存在,JavaScript会单击一个按钮,表单会更新为同时包含field1和field2。但是即使field2存在,警报框也会弹出,无论我使用哪3种方法。我使用ifnull'undefined'等尝试了各种组合。

如果field2存在,为什么会弹出警告框?

function foobar(){

if(!document.getElementsByName("field2"){
alert("foobar");
}

if(!document.forms[0].field2){
alert("foobar");
}

if(!document.forms[0].elements.namedItem("field2"){
alert("foobar");
}
}

4 个答案:

答案 0 :(得分:6)

您缺少一个括号:if(!document.getElementsByName("field2"))

答案 1 :(得分:3)

实际上,问题是该页面有各种形式,因此forms[0]并未指代我想要的形式。所以我认为最好的方法是使用this并直接引用input字段。此外,与undefined而不是!进行比较更为清晰。

这有效:

function foobar(fooform){
    if (fooform.field2 === undefined) {
        alert("foobar");
    }
}

这样称呼:

foobar(this.form);

答案 2 :(得分:0)

只是为了更新,因为使用getElementsByName并与null比较,不再正常工作。现在有效的是检查元素的长度。

if(document.getElementsByName("field2").length<=0) {
  // then field2 does not exist
}

答案 3 :(得分:0)

var element = document.getElementsByName("field2");
if(typeof(element) == 'undefined' && element != null)
{
// Field exists
}
else
{
// then field does not exist
}