2008-12-05 2 views
2

Я не могу отключить поле выбора, когда тег select не вложен внутри тега формы. Некоторые вещи, которые я пытался являются (с помощью 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 в отношении тега body в вашем HTML? Помните, что если у вас встроенный 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 
}); 

Это гарантирует, что код писать будет выполняться только страница завершения загрузки