【问题标题】:Check if a form input exists检查表单输入是否存在
【发布时间】:2012-05-15 15:06:48
【问题描述】:

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

【问题讨论】:

  • 请创建一个jsfiddle.net,包括您的 HTML 代码。
  • 顺便说一句,您的代码并不完全正确,但我无法重现您看到的行为。如果field2 存在,则不会显示警报:jsfiddle.net/jS7dT。您必须提供更多信息...

标签: javascript


【解决方案1】:

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

【讨论】:

  • 也在if(!document.forms[0].elements.namedItem("field2")
  • 它需要一个村庄......或类似的东西:p
  • 如果这些问题出在哪里,警告框根本不会出现,因为这些都是语法错误。由于 OP 收到警报,因此这不太可能解决问题。可能只是这里的错别字。
  • 是的,这只是一个错字,抱歉。
【解决方案2】:

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

这行得通:

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

这样称呼:

foobar(this.form);

【讨论】:

  • 而且必须是fooform.field2,旧的with(fooform) { if(field2) ...}会抛出field2未定义的错误。
  • 搭讪这个,if (fooform.field2 != undefined) { alert("foobar"); } 供其他阅读此文的人使用,请确保您没有使用fooform.field2.value 或引用任何其他属性,因为那样行不通。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:
    var element = document.getElementsByName("field2");
    if(typeof(element) == 'undefined' && element != null)
    {
    // Field exists
    }
    else
    {
    // then field does not exist
    }
    

    【讨论】:

    • 这是做什么的?
    • 检查页面中是否存在 HTML 字段。在发现输入字段是否隐藏并因此执行不同的操作时很有用。
    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。
    • 这段代码看起来不对。应该是 != 'undefined' iirc
    • Matty 不,代码没有错。我正在寻找未定义的,而不是已定义的。
    猜你喜欢
    • 2017-09-25
    • 2018-03-28
    • 2020-12-14
    • 1970-01-01
    • 2021-03-28
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多