2010-09-01 7 views
0

J'essaie d'ajouter un événement côté client à une liste déroulante et j'ai besoin d'accéder au texte actuellement sélectionné. J'ai essayé:Obtenir le texte vaule du côté client dropdownlist

ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text.Equals(' UNASSIGNED');"); 

et

ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.text.Equals(' UNASSIGNED');"); 

deux qui me donne l'exécution des erreurs lorsque l'événement est déclenché.

Quel est le moyen correct d'accéder à ce côté client de la propriété text?

J'ai essayé, mais il ne permet pas la case à cocher ...

ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text == ' UNASSIGNED';"); 

RÉPONSE:

Eh bien, ainsi que d'avoir à utiliser == plutôt que Equals, lorsque vous définir une checkbox.enabled = false du côté serveur, elle coche la case à cocher dans les balises et la définit sur disabled = true; Par conséquent, vous devez définir à la fois checkbox.disabled = false et checkbox.parentElement.disabled = false; côté client pour activer la case à cocher!

La solution:

ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').parentElement.disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED'); document.getElementById('" + chk_techreview.ClientID + "').disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED');"); 

Merci pour l'aide!

+0

Est-ce que 'UNASSIGNED' fait référence à option.text ou option.value? –

+0

texte. Il y a une valeur différente. Mais même si je mets == 'abc123' quand l'événement se déclenche, il évaluera false et le chekbox devrait avoir désactivé = false. donc je ne pense pas que cela puisse être le problème. – kralco626

Répondre

3

Il n'y a pas .Equals() sur une chaîne en JavaScript, utilisez plutôt l'opérateur ===, comme ceci:

ddl_tech.Attributes.Add("onchange", "document.getElementById('chk_techreview').disabled = (this.options[this.selectedIndex].text === 'UNASSIGNED');"); 

You can give it a try here, j'ai aussi changé l'événement à onchange puisque c'est probablement plus de ce que vous recherchez. En outre, selon votre option, il se peut que ce soit 'UNASSIGNED' plutôt que ' UNASSIGNED'.

+0

ya je pense que l'onchange devrait fonctionner mieux. Il est 'non assigné', cependant, c'est un moyen peu coûteux de le faire apparaître en haut d'une liste triée. Pas le meilleur moyen de l'obtenir au sommet, mais ça marche partout (SQL, asp etc.) Merci! – kralco626

+0

J'ai essayé mais ça ne semble pas fonctionner. J'ai posté ce que j'ai essayé dans ma question ... – kralco626

+0

@ kralco626 - Il vous manque un ensemble de parenthèses, vérifiez aussi ''UNASSIGNED'' vs' 'UNASSIGNED'' (sans l'espace). –

1

je crois qu'il devrait être:

ddl_tech.Attributes.Add("onclick", "var s = document.getElementById('" + chk_techreview.ClientID + "'); s.disabled = (s.selectedIndex == -1 || s.options[s.selectedIndex].text == ' UNASSIGNED ');"); 
Questions connexes