2014-02-21 32 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

相關問題