لا يوفر الحدث الأصلي GWT السلوك المقصود

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

  •  26-09-2019
  •  | 
  •  

سؤال

لديّ أداة نصية حيث أرغب في جعل حدث Enter للتصرف مثل حدث علامة التبويب. لذلك ألتقط الحدث الصحفي الرئيسي وأرفع حدثًا أصليًا في علامة التبويب.

ومع ذلك ، لا ينعكس سلوك علامة التبويب في التطبيق. رمز معالج الأحداث هو

   public void onKeyPress(KeyPressEvent event) { 
            int keyCode = event.getNativeEvent().getKeyCode(); 
            if (keyCode == KeyCodes.KEY_ENTER) { 
               NativeEvent nativeEvent = 
               Document.get().
                 createKeyPressEvent(false,false,false,false,KeyCodes.KEY_TAB ); 
               DomEvent.fireNativeEvent(nativeEvent, this, this.getElement()); 
            } 

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

     NativeEvent nativeEvent = 
       Document.get().
         createKeyPressEvent(false,false,false,false,
                      KeyCodes.KEY_TAB ,KeyCodes.KEY_TAB);
هل كانت مفيدة؟

المحلول

لاحظ أن إطلاق الحدث يدويًا لا يولد الإجراء الافتراضي المرتبط بهذا الحدث. على سبيل المثال ، لا يتسبب إطلاق حدث التركيز يدويًا في استلام العنصر (يجب عليك استخدام طريقة التركيز لذلك) ، فإن إطلاق حدث إرسال يدويًا لا يقدم نموذجًا (استخدم طريقة إرسال) ، وإطلاق الحدث الرئيسي يدويًا. لا تسبب ظهور هذا الحرف في إدخال نص مركّز ، وإطلاق حدث نقرة على الارتباط يدويًا لا يتسبب في تنشيط الرابط ، وما إلى ذلك. في حالة أحداث واجهة المستخدم ، هذا أمر مهم لأسباب أمنية ، لأنه يمنع البرامج النصية من محاكاة إجراءات المستخدم التي تتفاعل مع المتصفح نفسه.

من عند http://www.howtocreate.co.uk/tutorials/javaScript/domevents.

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