Voici mon JavaScript:Quel est le problème avec mon JavaScript? (C#/ASP.NET)
<script type="text/javascript">
function onholdev(index) {
var chk = document.getElementById('<%=grdCons.Rows[' + index + '].FindControl("chkHold").ClientID %>');
var txt = document.getElementById('<%=grdCons.Rows[' + index + '].FindControl("txtReason").ClientID %>');
if (chk.checked == true) {
txt.disabled = false;
}
else {
txt.disabled = true;
txt.value = "";
}
}
</script>
La variable 'index' provient de l'événement RowDataBound de mon GridView, comme ceci:
CheckBox chkHold = ((CheckBox)e.Row.FindControl("chkHold"));
chkHold.Attributes.Add("onchange", "onholdev(" + e.Row.RowIndex + ")");
Cependant, je suis obtenir 'trop de caractères en chaîne littérale' dans la première ligne de ma fonction (en commençant par var chk). Pourquoi est-ce?
Ce n'est pas tout à fait vrai - Il utilise côté serveur pour la sortie du client Id d'un contrôle qui est à peu près la seule façon pour obtenir l'Id comme ASP.Net les génère semi-aléatoirement. Le javascript généré devrait ressembler à ceci: 'var chk = document.getElementById ('chk_0000001');'. Cela dit, je suis d'accord qu'il est préférable d'essayer et de rester tout le côté serveur si vous pouvez – Basic
@Basiclife - Ce n'est pas correct, regardez la fonction, 'index' est un paramètre qui est passé, cela aurait JavaScript en essayant d'accéder à un serveur -side collection ('grdCons.Rows') par index, vous ne pouvez simplement pas faire cela. –
Ah - Je n'avais pas remarqué qu'il utilisait un index JS dans l'appel. Ouais ça ne va jamais marcher :) – Basic