Кажется, я не могу отключить поле выбора, если тег выбора не вложен в тег формы. Вот некоторые вещи, которые я пробовал (используя 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>
Должен ли я иметь это поле выбора внутри элемента формы?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Краткий ответ: нет, вам не нужно иметь поле выбора в форме.
Где ваш 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 упрощает это.
При использовании библиотеки jQuery убедитесь, что код, который вы пишете, всегда заключен в функцию $.ready:
$(function () {
//Type in your code here
});
Это гарантирует, что код, который вы пишете, будет выполнен после завершения загрузки страницы