【问题标题】:Get form element value in IE and Edge without querySelector在不使用 querySelector 的情况下获取 IE 和 Edge 中的表单元素值
【发布时间】:2016-10-05 04:35:00
【问题描述】:

假设我有一个表单,其中包含两个同名“question1”的单选按钮。还有另一个名称为“question2”的文本输入。我想要最有效的方法来检查两个输入是否都已填充,因此我需要一些可以访问这些输入值的代码。

这条线适用于大多数浏览器,但微软的浏览器,因为它们有一个愚蠢的 HTMLCollection 层:

var val1 = document.forms[0].elements['question1'].value // undefined in Microsoft;
var val2 = document.forms[0].elements['question2'].value // undefined in Microsoft;

使用 querySelector,我可以做这样的事情,这将适用于 Microsoft:

document.querySelector("form input[name='question1']:checked").value;
document.querySelector("form input[name='question2']").value;

请注意,这两行是不同的。我实际上有几十个这样的问题,所以我更喜欢一段代码,它适用于所有这些问题。有没有类似于第一部分代码的微软方式?

澄清:

我想知道是否有一行代码适用于任何类型的输入。

【问题讨论】:

    标签: javascript internet-explorer microsoft-edge


    【解决方案1】:

    在 IE 上试试这个:

    var allElems = document.getElementsByTagName('question1');
    for (i = 0; i < allElems.length; i++) {
        if (allElems[i].type == 'radio' && allElems[i].value !== ' ') {
            allElems[i].checked = true;
        }
    }
    

    剩下的:

       var elements = document.getElementsByName('question1');
         for (i=0;i<elements.length;i++) {
         if(elements[i].value !== "") {
          elements[i].checked = true;
        }
      }
    

    【讨论】:

    • 谢谢,但这不适用于单选按钮和复选框。对于单选和复选框类型,您通常只需要选择哪个值。
    • Ops 我没有太注意这个问题。我更新了我的答案。
    • 是的,谢谢,但这是非常简单的循环解决方案。我正在寻找浏览器内置的东西,这样效率更高。
    • 哦,我认为您找不到浏览器内置的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2013-09-27
    • 2022-10-08
    • 1970-01-01
    相关资源
    最近更新 更多