2014-09-01 95 views
1

我禁用包含文本框和按鈕控件的div。當文本框被禁用時,按鈕不會被禁用。 下面是JavaScript代碼來禁用,我在頁面加載調用CSS禁用屬性不禁用按鈕

document.getElementById("MainContent_TabContainer1").disabled = true; 

TabContainer的基本上是一個AJAX TabContainer的,向各股利和它的ID成爲MainContent_TabContainer1

請建議。

+0

您是否嘗試過將pointerEvents設置爲none? – J148 2014-09-01 16:57:46

+0

我有很多控件,並且爲所有控件設置指針事件屬性是不現實的。此外,該方案就像在我的應用程序中的用戶沒有登錄時,我想禁用整個頁面,而如果登錄的東西將處於正常狀態,並且所有按鈕都應該是可點擊的。 – user2861226 2014-09-01 17:02:37

+1

我敢肯定,你不能禁用DIV:http://www.w3.org/TR/html5/disabled-elements.html你可能需要遍歷它包含的元素。 – 2014-09-01 17:04:35

回答

0

檢查以下問題的答案 here

只是掩蓋一個div到父DIV。簡單而簡單。

0

我會一類設置的按鈕,呼叫getElementsByClassName方法,並遍歷結果,設定每一個殘疾人

我做了一個jsFiddle來證明這一點。

HTML:

<div id='hold'> 
    <button class='btn'>Click Me</button> 
    <button class='btn'>Click Me</button> 
    <button class='btn'>Click Me</button> 
    <div class='btn'>Click Me</div> 
</div> 

JS:

var buttons = document.getElementsByClassName("btn"); 
for (var x=0;x<buttons.length;x++) { 
    buttons[x].disabled = true; 
    buttons[x].style.pointerEvents = 'none'; //disables div buttons 
} 
+0

這不是一個傻瓜證明解決方案。我試了一下,它留下了一些具有onclick事件的div(用作按鈕)。最好的方法是用文檔掩碼來掩蓋它 – user2861226 2014-09-07 06:35:31

+0

哦,在這種情況下,我會使用'ele.style.pointerEvents ='none''。但是,對於他自己的 – J148 2014-09-07 20:16:44

0

1)如果你不使用IE瀏覽器來運行這個項目,你可以使用下面的解決方案: - - 與更換 'DIV' 'fieldset'並禁用'fieldset'將會禁用裏面的所有輸入和按鈕

<fieldset id="parent" > 
<button class='btn' onClick="myFunction()">Click Me</button> 
<input type="text"/> 
</fieldset> 

<script> 
function myFunction() { 
document.getElementById("parent").disabled = true; 
} 

2)要禁用父DIV

<div id="parent" > 
<button class='btn' onClick="myFunction()">Click Me</button> 
<input type="text"/> 
<input type="text"/> 
</div> 

<script> 
function myFunction() { 
var myDiv = document.getElementById("parent"); 

var inputArr = myDiv.getElementsByTagName("input"); 
for (var i = 0; i < inputArr.length; i++) 
inputArr[i].disabled = true; 

var btnArr = myDiv.getElementsByTagName("button"); 
for (var i = 0; i < btnArr.length; i++) 
    btnArr[i].disabled = true; 
} 
</script> 

注內的每個輸入和按鈕:只是爲了顯示的無效,該功能被綁定到本按鈕在父DIV

0

以下JavaScript代碼將完成你的任務

var nod = document.getElementById("MainContent_TabContainer1").getElementsByTagName('*'); 

for (var i = 0; i < nod.length; i++) { 
    nod[i].disabled = true; 
} 

如果你想要做的jQuery這份工作,那麼你可以寫下面的代碼

$("#MainContent_TabContainer1 *").attr("disabled", "disabled").off('click'); 
+0

它不適用於具有onclick屬性和錨定標記的div。但感謝您的建議。我發現實現它的最好方法是用另一個div屏蔽父div – user2861226 2014-09-02 14:54:20