8

当用户填写输入名称“field1”时,我想检查是否存在名为“field2”的输入标签。我通过使用field1标记onchange上的事件执行 JavaScript 函数来做到这一点。input(我正在使用警告框进行测试。)如果 field2 不存在,JavaScript 会单击一个按钮并更新表单以同时包含 field1 和 field2。但是,无论我使用 3 种方法中的哪一种,即使 field2 存在,也会弹出警报框。if我尝试了使用withnull'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

4 回答 4

6

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

于 2012-05-15T15:07:38.640 回答
6

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

这有效:

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

像这样调用:

foobar(this.form);
于 2012-05-16T11:13:25.487 回答
1

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

if(document.getElementsByName("field2").length<=0) {
  // then field2 does not exist
}
于 2018-01-24T06:41:25.453 回答
0
var element = document.getElementsByName("field2");
if(typeof(element) == 'undefined' && element != null)
{
// Field exists
}
else
{
// then field does not exist
}
于 2020-04-10T18:39:54.763 回答