2008-12-05 6 views
2

Je n'arrive pas à désactiver une zone de sélection lorsque la balise de sélection n'est pas imbriquée dans une balise de formulaire. Certaines choses que j'essayé sont (en utilisant Firefox 3): (via Jquery)Comment désactiver une boîte de sélection qui ne se trouve pas dans un formulaire?

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

(aussi)

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

Voici le code HTML:

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

Dois-je avoir cette sélection boîte à l'intérieur d'un élément de formulaire?

Répondre

4

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.

2

Lorsque vous utilisez la bibliothèque jQuery, assurez-vous que le code que vous écrivez est toujours enfermé dans la fonction $.ready:

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

Cela fait en sorte que le code que vous écrivez sera exécutée une fois la page a terminé le chargement

Questions connexes