【问题标题】:javascript remove "disabled" attribute from html inputjavascript从html输入中删除“禁用”属性
【发布时间】:2012-07-30 10:49:38
【问题描述】:

如何使用 javascript 从 HTML 输入中删除“禁用”属性?

<input id="edit" disabled>

在 onClick 我希望我的输入标签不包含“禁用”属性。

【问题讨论】:

    标签: javascript input attributes


    【解决方案1】:

    将元素的disabled属性设置为false:

    document.getElementById('my-input-id').disabled = false;
    

    如果您使用的是 jQuery,则相当于:

    $('#my-input-id').prop('disabled', false);
    

    对于多个输入字段,您可以改为按类访问它们:

    var inputs = document.getElementsByClassName('my-input-class');
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }
    

    其中document 可以替换为表单,例如,仅查找该表单内的元素。您还可以使用getElementsByTagName('input') 来获取所有输入元素。在您的 for 迭代中,您必须检查 inputs[i].type == 'text'

    【讨论】:

    • 是的,它有效,但我有很多输入需要做同样的事情。这有什么捷径吗?这是可能的 ('id1', 'id2', 'id3') 吗?
    • 是的,它有效!谢谢。顺便说一句, geElementsBy 有一个拼写错误。我以为它行不通:)
    【解决方案2】:

    为什么不直接删除该属性?

    1. 香草JS:elem.removeAttribute('disabled')
    2. jQuery: elem.removeAttr('disabled')

    【讨论】:

    • jQuery("#success").removeAttr("disabled"); - 这对我有用,谢谢!
    • vanilla js,IE 不支持 removeAttribute。
    • @MarCrazyness removeAttribute 似乎在 IE11 中受支持。我可以使用它被标记为unknown,所以我刚刚打开IE并检查它是否有效。确实如此。
    【解决方案3】:

    最好的答案就是 removeAttribute

    element.removeAttribute("disabled");
    

    【讨论】:

    • 在 Firefox 中,作为 nowadys (2020),disabled 属性处于活动状态,尽管它设置为 false。 firefox 只是在寻找属性本身。所以最好的解决方案是为firefox添加或删除它,这当然适用于所有主要浏览器。
    【解决方案4】:

    使用输入的name 属性将disabled 设置为false:

    document.myForm.myInputName.disabled = false;
    

    【讨论】:

      【解决方案5】:
      $("#input-id").attr("disabled", false)
      

      【讨论】:

      • 请编辑您的答案以添加一些解释。
      • 虽然这段代码可以回答这个问题,但最好在不介绍其他代码的情况下解释它是如何解决问题的,以及为什么要使用它。从长远来看,纯代码的答案没有用处。
      【解决方案6】:
      method 1 <input type="text" onclick="this.disabled=false;" disabled>
      <hr>
      method 2 <input type="text" onclick="this.removeAttribute('disabled');" disabled>
      <hr>
      method 3 <input type="text" onclick="this.removeAttribute('readonly');" readonly>
      

      之前答案的代码似乎不能在内联模式下工作,但有一个解决方法:方法 3。

      查看演示https://jsfiddle.net/eliz82/xqzccdfg/

      【讨论】:

      • 这两个对我不起作用。 method 1 &lt;input type="text" onclick="this.disabled=false;" disabled&gt; &lt;hr&gt; method 2 &lt;input type="text" onclick="this.removeAttribute('disabled');" disabled&gt;
      • 您只是因为不知道如何阅读答案而对此投了反对票?方法 1 来自 David Hedlund 响应,方法 2 来自 Dragos Rusu 响应。一旦元素被禁用,该特定元素上的“onclick”将不再在内联模式下工作(我没有测试外部 js 模式)。唯一的方法是模拟“禁用”是使用只读属性和一些 css 的一个小解决方法。或者制作一个外部“onclick”元素,例如一个按钮,可以使用方法 1 和 2 启用输入(当然可以)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 2017-08-20
      • 1970-01-01
      • 2012-05-12
      • 2018-01-25
      相关资源
      最近更新 更多