Chosen: iPad: لا يمكن إغلاق / إزالة اختيار li.search (حدث `click.chosen` لا ينطلق أبدًا)

تم إنشاؤها على ٤ ديسمبر ٢٠١٨  ·  5تعليقات  ·  مصدر: harvesthq/chosen

خطوات التكاثر

  1. قم بالوصول إلى https://harvesthq.github.io/chosen/ عبر iPad. يمكن أيضًا إعادة إنتاجه من خلال "شريط أدوات تبديل الجهاز" في وحدة تحكم Chrome ثم تحديد جهاز "iPad".

  2. ضمن "تحديد متعدد" ، أضف عنصرًا.

  3. الآن - بدون النقر فوق أي مكان آخر - انقر فوق "x" لإزالة العنصر المضاف. لا شيء يحدث.

سلوك متوقع

يجب إزالة عنصر li.search-choice . يجب إلغاء تحديد select.chosen-select option .

السلوك الفعلي

عنصر li.search-choice يبقى. يستمر تحديد select.chosen-select option . الحدث chosen.click لا ينطلق أبدًا.

بيئة

  • الإصدار المختار : 1.8.7 (على موقع الويب المختار) و ~ 1

  • إصدار jQuery أو النموذج الأولي : 3.2.1 (على موقع الويب المختار) و 2.1.4 و 2.2.4

  • المتصفح والإصدار : Chrome ، الإصدار 70.0.3538.110 (Official Build) (64 بت)

  • نظام التشغيل والإصدار : Windows 10 ، الإصدار 1709 ، إصدار نظام التشغيل 16299.492

معلومة اضافية

الحل البديل الذي يعمل في المستعرضات (من خلال "شريط أدوات تبديل الجهاز" في وحدة التحكم) ، ولكنه ليس أدنى حد بديهي ، هو:

  1. حدد عنصرًا من القائمة المفتوحة بحيث تتم إضافة العنصر li.search-choice . ملاحظة: النقر فوق "x" لا يزال لا يفعل شيئًا.
  2. انقر في مكان آخر على الموقع ؛ أي خارج المجال المختار.
  3. انقر فوق الحقل المختار حتى تظهر قائمة البحث.
  4. الآن يمكن النقر فوق "x" على العنصر المضاف مسبقًا والنقر عليه بشكل صحيح يزيل العنصر.

لا يبدو أن هذا يعمل على جهاز iPad فعلي فعلي.

أفكار

يبدو أن النقرة لا تتم تهيئتها في الوقت المناسب عند إضافة عنصر.

مسح سريع لرمز Javascript المختار أرى أنه يتم التعامل مع الأحداث الأساسية التالية - فيما يتعلق بالنقر -:

  • mousedown
  • mousemove
  • mouseup
  • touchstart
  • touchmove
  • touchend

ما لا أراه هو التعامل مع الحدث من أجل:

  • pointerdown
  • pointermove
  • pointerup

ربما هذا له تأثير على الأمر؟

Bug iOS

ال 5 كومينتر

يمكن تأكيد أنه (على الأقل في Chrome يتظاهر بأنه جهاز iPad) لا يمكنك إلغاء تحديد العناصر من تحديد متعدد. النقر على علامة X لا يفعل شيئًا.

جئت عبر نفس المشكلة.

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

بمجرد إغلاق القائمة المنسدلة ، مرة أخرى ، X لا يعمل.

يمكنني إعادة إنتاج هذا على كل من محاكي الكروم والجهاز المادي.

فقط أن يكون واضحا. من خلال الخروج من العنصر ، تحتاج إلى جعل .chosen-container لإسقاط فئة chosen-container-active . عند إزالة chosen-container-active من chosen-container وتطبيقه مرة أخرى بتركيز جديد ، فإنه يعمل بشكل جيد في هذه اللحظة.

حسنًا ، لست متأكدًا من المشكلة بالضبط هنا ، لكنني جعلتها تعمل من أجلي.

أولاً أستخدم هذه الخيارات عند التهيئة:

el.chosen({
    display_selected_options: false,
    hide_results_on_select: false,
});

لبعض الأسباب المختارة تمنع أي تفاعلات مع عناصر التحكم عندما لا تركز على مجال ما.

لقد وجدت أنه عند النقر فوق الحقل الخارجي results_hide يسمى ، وهذه الطريقة تمنع الحقل تمامًا من الوصول (على الأقل على الهاتف المحمول / الجهاز اللوحي). لذلك كنت أبحث عن طريقة لمنع هذا السلوك.

يبدو أن تعيين علامة results_showing على false يسبب هذا الخطأ.

Chosen.prototype.results_hide = function() {
  if (this.results_showing) {
    this.result_clear_highlight();
    this.container.removeClass("chosen-with-drop");
    this.form_field_jq.trigger("chosen:hiding_dropdown", {
      chosen: this
    });
  }
  // removed because of mobile issue with removeing options
  // return this.results_showing = false;
};

إزالته من المصدر (غير مريح ، ولكن لا يوجد خيار آخر الآن) ، يجب أن يؤدي الغرض.

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

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

خط 590:

    AbstractChosen.browser_is_supported = function() {
      if ("Microsoft Internet Explorer" === window.navigator.appName) {
        return document.documentMode >= 8;
      }
      if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
        return false;
      }
      if ((/iPhone|iPod|iPad|Android|android|playbook|silk|BlackBerry/).test(navigator.userAgent))
      {
        return false;
      }
      if (/Android/i.test(window.navigator.userAgent)) {
        if (/Mobile/i.test(window.navigator.userAgent)) {
          return false;
        }
       }
       return true;
     };

هتافات
هانيس

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

asvetlenko picture asvetlenko  ·  3تعليقات

blankhang picture blankhang  ·  7تعليقات

jbrooksuk picture jbrooksuk  ·  6تعليقات

alexfrancavilla picture alexfrancavilla  ·  9تعليقات

eduardokranz picture eduardokranz  ·  6تعليقات