سؤال

ولدي عنصر الإدخال مع عند_التغيير = "do_something ()". وأنا عندما كتابة وضرب أدخل فأدخله تعدم بشكل صحيح (do_something أولا، تقديم آنذاك) على فايرفوكس والكروم (لم تختبر في IE و Safari)، ولكن في أوبرا فإنه لا (انها تقدم على الفور). حاولت استخدام تأخير مثل هذا:

<form action="." method="POST" onsubmit="wait_using_a_big_loop()">
<input type="text" onchange="do_something()">
</form>

ولكن ذلك لم ينجح أيضا.

هل لديك بعض التوصيات؟

وتحرير: وأخيرا أنا استخدم مزيج من الحلول التي تقدمها iftrue وcrescentfresh، فقط لا تركز مجال لاطلاق النار do_something طريقة ()، فعلت ذلك لأن بعض حقول الإدخال الأخرى كان هناك طرق أخرى عند_التغيير.

$('#myForm').submit( function(){
    $('#id_submit').focus();
} );

والشكر

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

المحلول

هل يمكن استخدام مسج وخطف النموذج.

http://docs.jquery.com/Events/submit

<form id = "myForm">

</form>

   $('#myForm').submit( function(){
   do_something();
   } );

وهذا يجب تقديم الاستمارة بعد استدعاء هذا الأسلوب. إذا كنت بحاجة إلى المزيد من السيطرة غرامة الحبيبات، ورمي كاذبة عودة في نهاية تقديم الحدث وتقديم طلب آخر الخاصة بك مع .post $ ()؛

نصائح أخرى

http://cross-browser.com/forums/viewtopic. ؟ فب معرف = 123 :

<اقتباس فقرة>   

ولكل المواصفات، والضغط على إدخال ليس   من المفترض أن إطلاق الحدث التغيير. ال   يحدث حدث تغيير عند عنصر تحكم   يفقد التركيز وتغير قيمته.

     

في IE الضغط على إدخال يركز   زر الإرسال - حتى إدخال النص   يفقد التركيز وهذا يؤدي إلى تغيير   الحدث.

     

في FF الضغط على Enter لا يركز   على زر الإرسال، إلا أن التغيير   استمرار حدوث الحدث.

     

في أوبرا لا ما ذكر أعلاه يحدث.

وkeydown هو أكثر اتساقا عبر المتصفحات للكشف عن تغيرات في حقل.

وأنا لست كبيرة في جافا سكريبت، ولكن هل يمكن أن تفعل شيئا مثل هذا؟

<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top