لا يمكن الحصول على وظيفة JavaScript لإطلاق النار من مربع نص في GridView

StackOverflow https://stackoverflow.com/questions/1330058

سؤال

لدي مربع نص في INSTEMPLATE من GridView. على الحدث _rowdatabound أضيف سمة إلى مربع النص مثل ذلك:

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

وهذا ببساطة لن يطلق وظيفة JS.

لقد حاولت القيام onclick، onllur، onkeypress ... حتى حاول تغيير القضية إلى: OnClick، OnBlur، OnkeyPress ... لا شيء يبدو أنه قادر على إطلاق وظيفة JS الخاصة بي.

في مكان آخر في نفس الصفحة لدي:

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

(أن مربع النص ليس في GridView) وهذا يعمل بشكل جيد فقط.

أنا عالق تماما والإحباط عند هذه النقطة لأنه يبدو بغض النظر عن ما أقوم به، لا يمكنني الحصول على مربع النص هذا لإطلاق وظيفة جافا سكريبت

هل كانت مفيدة؟

المحلول

يرجى تشغيل مشروعك وإلقاء نظرة على اسم مربع النص الذي تم إنشاؤه عن طريق عرض المصدر في BROSWER (أي Firefox، Safari، أيا كان). من المحتمل أن ترى أن اسم مربع النص قد تغير. شكرا، asp.

لا يمكنك استخدام DOM للوصول إلى العناصر حسب الاسم لأنهم تمت إعادة تسميته لك.

نصائح أخرى

لسبب ما، لم يكن حذف ملفات الإنترنت المؤقتة وإعادة تحميل الصفحة أحدث .js. اضطررت إلى تفريغ المشروع وإعادة بناءها. وهو غريب لأنني لم يكن علي أن أفعل ذلك من قبل عناصر التحكم الأخرى

شكرا للمدخلات الخاصة بك!

جرب هذه:

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);

أو ببساطة

txtQuantity.Attributes["onkeypress"] =
    string.Format("javascript:CheckInputForNumeric (this);");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top