2009-08-25 13 views
2

J'ai une zone de texte dans le ItemTemplate d'un Gridview. L'événement _RowDataBound ajouter un attribut à la zone de texte comme ceci:Impossible d'activer la fonction Javascript à partir d'une zone de texte dans une vue en grille

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity"); 
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)"); 

Et simplement ne se déclenchera pas une fonction JS.

J'ai essayé de faire onClick, onBlur, onKeyPress ... j'ai même essayé de changer le cas pour: onclick, onblur, onkeypress ... rien ne semble pouvoir déclencher ma fonction JS.

ailleurs sur la même page que j'ai:

txtAddMarkup.Attributes.Add("onkeypress", "CheckInputForNumeric(event)"); 

(qui TextBox est pas dans un gridview) et cela fonctionne très bien.

Je suis totalement bloqué et frustré à ce stade car il semble peu importe ce que je fais, je ne peux pas obtenir ce champ de saisie pour tirer une fonction JavaScript

Répondre

0

S'il vous plaît exécuter votre projet et regardez le nom de la zone de texte généré en regardant la source dans le broswer (IE, Firefox, Safari, peu importe). Vous verrez probablement que le nom de la zone de texte a changé. Merci, ASP.

Vous ne pouvez pas utiliser le DOM pour accéder aux éléments par leur nom car ils sont renommés pour vous.

+0

Il ne ressemble pas qu'il passe au nom du contrôle. Pourriez-vous clarifier s'il vous plaît? – JustLoren

+0

quand je regarde la source, je vois ceci pour l'élément de zone de texte:

+0

Ce n'est pas que quelque chose ne va pas avec le HTML, c'est que vous le pointez du nom "txtQuantity" quand il a été renommé "ctl00" $ ContentPlaceHolder1 $ grdJobEquipment $ ctl02 $ txtQuantity ". Donc, il n'y a plus rien sur votre page nommé txtQuantity. :-( – Rap

0

Pour une raison quelconque, la suppression de fichiers Internet temporaires et le rechargement de la page n'obtenaient pas le fichier .js le plus récent. J'ai dû décharger le projet et le reconstruire. Ce qui est bizarre parce que je n'ai jamais eu à le faire auparavant pour d'autres contrôles

merci pour vos entrées!

0

essayer celui-ci:

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity"); 
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)"); 

txtQuantity.Attributes["onkeypress"] = 
    string.Format("javascript:CheckInputForNumeric(this,'{0}','{1}','{2}');", argument1, argument2, argument3); 

ou simplement

txtQuantity.Attributes["onkeypress"] = 
    string.Format("javascript:CheckInputForNumeric (this);");