Réponse courte: Non, vous n'avez pas besoin d'avoir la zone de sélection dans un formulaire.
Où votre code JavaScript est-il actuellement inclus par rapport à la balise body
dans votre code HTML? Rappelez-vous que si vous avez inclus JavaScript dans la tête si votre page, alors il se déclenchera que la page est chargée. À ce stade, la zone de sélection n'aura pas été analysée et, par conséquent, votre code ne pourra pas y accéder afin de le désactiver.
Je ne suis pas fan du mixage JavaScript et du balisage, mais cette démo devrait fonctionner à toutes fins pratiques.
<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>
Si, pour une raison quelconque, vous devez garder le script situé dans la page plutôt que d'un fichier externe, vous pouvez configurer un gestionnaire d'événements pour effectuer la même fonctionnalité une fois la page chargée. Plutôt que le code en gardant au fond du balisage, vous pouvez inclure dans votre nœud principal:
<head>
<title>JavaScript Select Demo</title>
<script type="text/javascript">
window.onload = function() {
document.getElementById('mySelect').disabled = true; ;
}
</script>
</head>
Enfin, au lieu d'incorporer un gestionnaire onchange
dans les attributs de votre balisage, vous pourriez aussi mettre en place un gestionnaire d'événements en votre JavaScript pour effectuer le même comportement. jQuery makes this really easy.