Non può ottenere la funzione Javascript per il fuoco da una casella di testo in un GridView
-
19-09-2019 - |
Domanda
ho una casella di testo in ItemTemplate di un GridView. Sul caso _RowDataBound aggiungo un attributo alla casella di testo in questo modo:
TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");
E semplicemente non si attiverà una funzione JS.
Ho provato a fare onClick, onBlur, OnKeyPress ... anche provato a cambiare il caso di: onclick, onblur, onkeypress ... nulla sembra essere in grado di sparare la mia funzione JS
.altrove sulla stessa pagina ho:
txtAddMarkup.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");
(che textbox non è in un GridView) e questo funziona bene.
Sono totalmente bloccato e frustrato a questo punto perché sembra non importa quello che faccio, non posso ottenere questo campo testo per sparare una funzione JavaScript
Soluzione
Si prega di eseguire il progetto e guardare il nome della casella di testo generato visualizzando il sorgente nel broswer (IE, Firefox, Safari, a prescindere). È probabile che tu vedi che il nome della casella di testo è cambiato. Grazie, ASP.
Non è possibile utilizzare il DOM per accedere agli elementi per nome perché sono rinominati per voi.
Altri suggerimenti
Per qualche ragione, l'eliminazione dei file temporanei di Internet e ricaricare la pagina non è stato sempre più nuovi .js. Ho dovuto scaricare il progetto e ri-costruirlo. Il che è strano perché non ho mai avuto a che fare prima per altri controlli
Grazie per il vostro input!
provare questo:
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);
o semplicemente
txtQuantity.Attributes["onkeypress"] =
string.Format("javascript:CheckInputForNumeric (this);");