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