2014-02-21 31 views
-2

我想更改已禁用属性已禁用到已启用输入标记在双击中使用javascript。如何更改输入标记中的禁用属性

这可能吗?

谢谢。

+2

是的,这是非常可能的。获取元素(通过id,class,等等),并适当地设置它的'disabled'属性。您还可以使用多种方式侦听事件,特别是双击事件。到目前为止,你尝试了什么? – Ian

+0

@Ian,你确定...;) – epascarello

+0

我没有使用css的经验,我只知道winapi,但对于项目我是工作,有些代码使用IE渲染引擎。 – user2120666

回答

1

是与.disabled

document.getElementById("elementID").disabled = false; 

或者.removeAttr

document.getElementById("elementID").removeAttr("disabled"); 

小提琴:http://jsfiddle.net/CGy6j/

由于disabled元素不注册单击事件,包你inputspan和做的逻辑:

<span id="wrapper"><input type="text" id="testInput" /></span> 

var input = document.getElementById("testInput"), 
    fake = document.getElementById("wrapper"); 

fake.ondblclick = function() { 
    input.disabled = !input.disabled; 
} 
+0

我不明白为什么这是downvoted,但它很有趣,+10好友 – pythonian29033

+0

只有答案一半是问题,另一半是回答难的部分。 – epascarello

+1

(din't downvote)但'.removeAttr()'不应该是'removeAttribute()'? –

0

好的,所以使用tymeJVs与这个事件“ondblclick”一起回答,你会使用类似这样的东西;

<script> 
    function myFunction(){ 
     document.getElementById("inField").removeAttribute('disabled'); 
    } 
</script> 

<div ondblclick="myFunction();"><input id="inField" disabled=disabled/></div> 
+0

无法工作 - 禁用的元素不会注册点击事件。你需要一个隐藏的输入覆盖注册 – tymeJV

+0

感谢您的意见tymeJV – pythonian29033

1

现在,这里的乐趣是,禁用的元素不火鼠标事件,所以你无法将事件监听器添加到元素。您需要监听DOM链上的双击事件。

HTML:

<form id="frm"> 
    <input type="text" id="foo" disabled="disabled" /> 
</form> 

的JavaScript:

document.getElementById("frm").ondblclick = function (evt) { //there are better ways of adding events 
    evt = evt || window.event; 
    var target = evt.target || evt.srcElement; //get what was clicked on 
    if (target.disabled) { //see if it was disabled 
     target.disabled = false; 
    } 
}; 

JSFiddle

现在的问题是,不是所有的浏览器甚至传播完成了禁用的元素的事件!

+0

谢谢。这看起来有希望。有可能使用类名来代替ID? – user2120666

+0

是的,你可以。 'document.getElementsByClassName( “theClass描述”)[0] .ondblclick' – epascarello

相关问题