2008-12-05 42 views
2

當select標籤沒有嵌套在form標籤中時,我似乎無法禁用選擇框。有些事情我想是(使用Firefox 3):(通過jQuery)如何禁用不在表單內的選擇框?

$("#mySelect").attr("disabled", true); 
$("#mySelect").attr("disabled", "disabled"); 

(也)

document.getElementById('mySelect').disabled = true; 
document.getElementById('mySelect').disabled = true; 

下面是HTML:

<select id="mySelect" onchange="updateChoice();"> 
<option value="1">First</option> 
<option value="2" selected="">Second</option> 
</select> 

我必須有這樣的選擇表單元素中的框?

回答

4

簡答:不,您不需要在表單中選擇框。

您的JavaScript目前包含在您的HTML中的body標記中?請記住,如果您的頁面中包含頭部內聯JavaScript,那麼它會在頁面加載時觸發。此時,選擇框將不會被解析,因此,您的代碼無法訪問它以禁用它。

我並不喜歡將JavaScript和標記混合在一起,但這個演示應該適用於所有的意圖和目的。

<html> 
<head> 
    <title>JavaScript Select Demo</title> 
</head> 
<body> 
    <select id="mySelect" onchange="updateChoice();"> 
     <option value="1">First</option> 
     <option value="2" selected="">Second</option> 
    </select> 
</body> 
<script type="text/javascript"> 
    document.getElementById('mySelect').disabled = true; 
</script> 
</html> 

如果出於某種原因,你必須保持位於頁面而不是外部文件中的腳本,你可以設置在頁面加載後的事件處理程序來執行相同的功能。而不是保持代碼的標記的底部,你可以在你的頭節點包括此:

<head> 
    <title>JavaScript Select Demo</title> 
    <script type="text/javascript"> 
    window.onload = function() { 
     document.getElementById('mySelect').disabled = true; ; 
    } 
</script> 
</head> 

最後,而不是在您的標記屬性包含一個onchange處理程序,你可以或者設置一個事件處理程序你的JavaScript執行相同的行爲。 jQuery makes this really easy

2

當使用jQuery庫,確保你寫的代碼總是封閉在$.ready功能:

$(function() { 
    //Type in your code here 
}); 

這可以確保一旦頁面加載完成後你寫的代碼會被執行

相關問題