استدعاء حدث onchange JavaScript عن طريق تغيير قيمة TextBox بشكل برمجي

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

  •  09-09-2019
  •  | 
  •  

سؤال

المشكلة التي أواجهها هي:

  • لدي مربع نص لمجموعة تاريخية بجانب عنصر تحكم تقويم.
  • عندما يختار المستخدم تاريخا من التقويم، فإنه يملأ ذلك التاريخ في مربع النص
  • عندما يحدث هذا، أريد إطفاء وظيفة JavaScript، ومع ذلك، لا يبدو أن حدث "Onchange" يحدث.

أنا من الناحية المثالية أن أكون قادرا على إضافة الحدث كسمية إلى مربع النص، شيء مثل:

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));

مزيد من المعلومات: يتم إدخال التاريخ في مربع النص في C #. عنصر تحكم التقويم لديه EventHandler على الصفحة. عند تحديد موعد، يضع EventHandler التاريخ في مربع النص. لقد حاولت تحديد التركيز على مربع النص في هذه المرحلة، ثم وضع سمة OnBlur على مربع النص، ولكن يبدو أن مربع النص لا يحصل على التركيز.

أفترض أنني يمكن أن أتصل مباشرة بوظيفة JavaScript في هذه المرحلة تفعل كلية clientscript.registerclientscriptblock أو شيء من هذا القبيل، ولكن هذا يبدو قذرا ويعمل أبدا مثل أريد ذلك.

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

المحلول

تسيء تفسير ما يفعله حدث OnChange عند تطبيقه على Textarea. لن ينطلق حتى يفقد التركيز أو تضغط على الدخول. لماذا لا تطلق الدالة من Onchange على تحديد يملأ في منطقة النص؟

تحقق هنا لأكثر من ذلك على حدث onchange: W3Schools.

نصائح أخرى

هذا سؤال قديم، وأنا لست متأكدا مما إذا كان سيساعد، لكنني تمكنت من إطفاء الحدث ببرمجة باستخدام:

if (document.createEvent && ctrl.dispatchEvent) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", true, true);
    ctrl.dispatchEvent(evt); // for DOM-compliant browsers
} else if (ctrl.fireEvent) {
    ctrl.fireEvent("onchange"); // for IE
}

يمكنك إطلاق الحدث ببساطة مع

document.getelementByid ("elementid"). onchange ()؛

أنا لا أعرف ما إذا كان هذا لا يعمل على بعض المتصفحات، ولكن يجب أن يعمل على FF 3 و IE 7+

Onchange يتم إطلاقه فقط عندما يدخل المستخدم بشيء من قبل لوحة المفاتيح. أ المستطاع يمكن أن يكون WorkarrAround هو أولا تركيز TextField ثم قم بتغييره.

ولكن لماذا لا تجلب الحدث عند النقر فوق المستخدم في تاريخ؟ يجب أن يكون هناك بالفعل بعض جافا سكريبت.

أنت سكانك من جانب الخادم. سيؤدي استخدام التسجيلات إلى وضع البرنامج النصي في بداية النموذج .. ستحتاج إلى استخدام RegisterStartApScript (Block) للحصول على البرنامج النصي الموضعي في نهاية الصفحة المعنية.

يحاول السابقين تشغيل البرنامج النصي قبل أن توجد منطقة النص في DOM، سيقوم الأخير بتشغيل البرنامج النصي بعد إنشاء هذا العنصر الموجود في الصفحة.

يمكنك المحاولة مكتبة النشيد.

يمكنك وضعه في فئة مختلفة ثم استدعاء وظيفة. هذا يعمل عند تحديث AJAX

$(document).on("change", ".inputQty", function(e) {

//Call a function(input,input);
});

يتم تشغيل "Onchange" فقط عند تغيير السمة برمجيا أو عندما يقوم المستخدم بإجراء تغيير ثم يركز بعيدا عن الحقل.

هل نظرت إلى استخدام كائن تقويم YUI؟ لقد ترميز حلا يضع تقويم YUI داخل لوحة YUI ويخفي اللوحة حتى يتم النقر فوق الصورة المرتبطة بها. أنا قادر على رؤية التغييرات من أي منهما.

http://developer.yahoo.com/yui/examples/calendar/formtxt.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top