2010-05-28 22 views
1

Je dois obtenir la valeur sélectionnée d'une combobox ajax.net à travers javascript pour que je puisse faire une validation côté client.Comment obtenir la valeur sélectionnée de ajax.net ComboBox par javascript

Quelle est la meilleure façon de faire cela? Merci,


J'ai été en mesure d'obtenir la valeur avec ceci:

var combo = $get('ddlComarcas'); 
var comboHidden = $get('ddlComarcas_HiddenField'); 
var o4 = combo.getElementsByTagName('li')[comboHidden.value].childNodes[0]; 

alert('"' + o4.data + '"'); 

Mais je dois encore couper la valeur de o4.data. Tout le monde peut indiquer comment faire ce studio visuel 2008 jquery?

Répondre

0

Vous pouvez utiliser jQuery ou tout simplement utiliser DOM:

jQuery:

var selection = $('#selectID').val(); 

DOM:

var selection = document.getElementById("selectID").value; 

asp.net -> côté serveur

javascript -> client côté

+0

Merci, mais votre solution ne fonctionne pas. La combobox de l'ajaxtoolkit est composée de 3 entrées. Je ne peux pas obtenir la valeur avec ça. –

0

Je pense que la réponse est la valeur n'existe pas côté client, donc il ne peut pas être récupéré. Il existe des moyens plus simples d'obtenir l'index tho (en supposant que l'initialisation soit complète).

selected index:   $find("<%=cboName.ClientID%>").get_hiddenFieldControl().value; 
selected index (again): $find("<%=cboName.ClientID%>").get_selectedIndex(); 
selected text:   $find("<%=cboName.ClientID%>").get_textBoxControl().value; 

Pour autant que je peux dire, la validation d'un combobox sur le client exige une certaine foi dans l'index ou d'un texte, ou une sorte de solution côté serveur.

Fournir une réponse directe à la ligne d'objet, un tableau JavaScript pourrait être créé côté serveur à chaque valeur combobox puis référencé côté client par index sélectionné ...

codebehind:

// write combobox values to asp:literal 
foreach (ListItem i in cboName.Items) 
     litCboValues.Text += "\"" + i.Value.Replace("\"", "\\\"") + "\", "; 
litCboValues.Text = litCboValues.Text.TrimEnd(new char[] {',', ' '}); 

ASPX:

<script> 
// array of values 
var cboValues = [ <asp:Literal id="litCboValues" runat="server" /> ]; 

// add an alert to the combobox to test 
function pageLoad() 
{ 
    $find("<%=cboName.ClientID%>").get_textBoxControl().onblur = function() { 
    alert(cboValues[$find("<%=cboName.ClientID%>").get_selectedIndex()]); 
    }; 
} 
</script> 


<asp:ComboBox id="cboName" runat="server" ... 
0

cela fonctionne (aujourd'hui) dans IE et Chrome - la seule chose à savoir est bon pour le débogueur f12 (- vous pouvez naviguer à travers les objec regardé ts

Après // je le fais sur le bouton, mais vous pourriez probablement faire un événement combo Suivez
function addFollowed() { 
     var combo = $get('<%= FollowListBox.ClientID %>'); 
     var toFollow = combo.control._textBoxControl.value;