2011-07-26 27 views
15

我想知道腳本是否可以使用某種切換按鈕來啓用/禁用頁面上的所有輸入元素。啓用/禁用輸入元素的腳本?

我用Google搜索,但沒有發現任何東西,除了這個太有用了:

http://www.codetoad.com/javascript/enable_disable_form_element.asp ,但我不知道如何修改它的切換。

+0

你的鏈接斷開 –

+0

你可以使用jQuery嗎?可以用jQuery做心跳 – Mrchief

+0

Need selection,textareas,buttons? – epascarello

回答

18

的工作,例如:

$().ready(function() { 
 

 

 
    $('#clicker').click(function() { 
 
     $('input').each(function() { 
 
      if ($(this).attr('disabled')) { 
 
       $(this).removeAttr('disabled'); 
 
      } 
 
      else { 
 
       $(this).attr({ 
 
        'disabled': 'disabled' 
 
       }); 
 
      } 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
 
<input type='text'></input> 
 
<input type='text'></input> 
 
<input type='text'></input> 
 

 

 
<div id='clicker' style='background-color:#FF0000; height:40px; width:100px;'></div>

+0

謝謝!我忘了補充說我想在jQuery中使用它,但是你爲jq做了這個,所以謝謝。我想我喜歡這個最好的。 – Charlie

+1

此jsfiddle不再可用 – sheba

21

像這樣的東西會工作:

var inputs=document.getElementsByTagName('input'); 
for(i=0;i<inputs.length;i++){ 
    inputs[i].disabled=true; 
} 
+1

這將只會禁用然後不切換爲問題 – samccone

+0

好的,謝謝,我會研究它。 – Charlie

+0

'document.getElementById('element-name')。disabled = false;'是我在找的東西。謝謝! – Edward

1
for (var i = 0; i < document.getElementyByTagName('input').length; i++) { 
    document.getElementsByTagName('input')[i].disabled = 'disabled'; 
} 
+0

謝謝! html會是什麼樣子? – Charlie

+0

這個例子只會禁用這些字段而不能切換它們 – samccone

4

這裏來切換頁面上的所有輸入的功能:

function toggle_inputs() { 
    var inputs = document.getElementsByTagName('input'); 
    for (var i = inputs.length, n = 0; n < i; n++) { 
     inputs[n].disabled = !inputs[n].disabled; 
    } 
} 

它通過使用logical NOT operator(驚歎號) ,它返回操作數的相反部分。例如,!true將返回false。因此,通過使用!inputs[n].disabled,它將返回與當前設置相反的值,從而切換它。

如果你需要的代碼到Click事件綁定到按鈕:

document.getElementById('your_button_id').onclick = toggle_inputs; 

您還可以使用addEventListener,但看到鏈接的頁面以獲取更多信息,包括與Internet Explorer的兼容性。我上面給出的代碼應該可以在所有瀏覽器中工作,而不會有任何問題

+0

謝謝你的代碼,我會仔細看看它。 – Charlie

1

http://code.google.com/p/getelementsbyclassname/

^^羅伯特·尼曼有一個 「獲得通過階級分子」 的劇本。基本上你只分配所有這些投入要素相同的類,然後像做:

//Collapse all the nodes 
function collapseNodesByClass(theClass){ 
    var nodes = getElementsByClassName(theClass); 
    for(i = 0; i < nodes.length; i++){ 
    nodes[i].style.display='none'; 
    } 
} 

這是我實際上目前使用的崩潰與一個給定的類名都的一段代碼(它使用我上面提到的腳本)。但無論如何,我認爲你問題的關鍵是能夠一次引用多個元素,這個腳本可以幫助你。

而且在你的問題的鏈接並沒有爲我工作:(

+0

我修復了鏈接,並感謝您的代碼。如果我有更多的js問題,我會告訴你。 – Charlie