J'ai créé une liste déroulante dans mon contrôle utilisateur, voir le code source ci-dessous,Référencer le contrôle Web ASP.NET en javascript
<asp:DropDownList ID="ddlInd" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>
Dans Page_load Je l'ai fait:
protected void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "myScript", "<script language='javascript' src='../Scripts/myJS.js'></script>");
ddlInd.Attributes["onchange"] = "showTextbox()";
}
Alors quel code devrais-je utiliser, si je voudrais me référer à ce contrôle dans mon fichier javascript externe, myJS.js?
J'ai essayé d'utiliser document.getElementById("<%=ddlInd.ClientID %>")
mais il retournera NULL.
Quelqu'un peut-il aider? Merci
EDIT:
Je ne sais pas si ce fichier myJS.js attache serait utile ici
function showTextbox() {
var sid = <%=ddlInd.ClientID %>;
//alert(sid);
var s = document.getElementById('<%=ddlInd.ClientID %>'); // <-- problem here
alert(s);
if (s.options[s.selectedIndex].value == "Other") {
myDiv.style.display = "inline";
alert("display");
}
else {
myDiv.style.display = "none";
alert("none");
}
}
EDIT2:
Je trouve un peu la solution de contournement qui consiste à intégrer des scripts dans l'utilisateur page de contrôle au lieu d'utiliser un fichier de script externe. Merci à tous pour les suggestions. Ils étaient tous très utiles.
également le script js modifié est comme suit, et cela fonctionne:
function showTextbox(objID) {
var s = document.getElementById(objID);
var div = document.getElementById("myDiv");
if (s.options[s.selectedIndex].value == "Other") {
div.style.display = "inline";
}
else {
div.style.display = "none";
}
}
ddlInd.ClientID retourne-t-il la valeur null ou getElementById? –
@paolo Je pense que son document.getElementByID qui renvoie NULL – woodykiddy
Où et comment avez-vous essayé 'document.getElementById (" <% = ddlInd.ClientID%> ")', comme paramètre pour 'showTextbox'? Il pourrait également être utile de voir la partie pertinente de votre Usercontrol où 'ddlInd' et le TextBox sont. Est-ce que 'showTextbox' n'a pas besoin de l'ID de TextBox? –