Chosen: ابق مفتوحا في اختيار متعدد

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

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

Feature Request

التعليق الأكثر فائدة

+1

ال 53 كومينتر

سيبقى التحديد مفتوحًا إذا قمت بالضغط على CMD ⌘ أو CTRL عند تحديد الخيارات. لا يوجد حاليًا خيار للاحتفاظ بخيار التحديد افتراضيًا.

هل يمكن تنفيذ هذا بطريقة ما؟

هل يمكنك إعطاء مثال في أي حالة سيكون هذا مفيدًا؟

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

+1

+1 - لسبب وحيد هو أننا نستخدم Chosen كآلية تصفية حيث من المرجح أن يقوم المستخدم النهائي بالتصفية حسب عناصر متعددة لكل فئة. يعني التنفيذ الحالي أنه يتعين علينا تضمين سطر نصي مساعد يشرح كيفية إبقاء الصندوق مفتوحًا بدلاً من مجرد القدرة على تعيين خيار وإبقائه مفتوحًا طالما يحتاجون إليه.

قطعا +1 !! هناك الكثير من حالات الاستخدام حيث يجب أن يظل التحديد مفتوحًا لتتمكن من تحديد خيارات متعددة. في الواقع ، أعتقد أن عدد حالات الاستخدام التي ستستفيد من التحديد المفتوح يفوق عدد الحالات التي يجب إغلاق التحديد فيها بعد اختيار خيار واحد فقط. من وجهة النظر هذه ، يجب أن يكون سلوكًا افتراضيًا لإبقائه مفتوحًا. لم يتم تسميته "select-multiple" من أجل لا شيء ؛-) لكن خيار التكوين للتمكن من إبقائه مفتوحًا سيكون جيدًا بما يكفي ، وآمل أن يتم تنفيذه قريبًا حقًا.

مرحبا،

هل توصل أي شخص إلى طريقة لحل هذا؟

عندما أحاول ما يلي ، فإنه لا يعمل أيضًا ، فإنه لا يؤدي إلى تشغيل الحدث المفتوح:

jQuery("select.select-chosen").on('change', function(evt, params) {
    jQuery(this).trigger('chosen:open');
});

السيد الكسندر

+1 لكل منgeebru و @ silkfire

ربما تكون هذه هي نقطة الألم رقم 1 للأشخاص الذين يستخدمون عنصر التحكم المختار في الوضع المتعدد - خاصةً عندما يكون هناك أكثر من 2-3 عناصر يجب تحديدها. نأمل أن نرى هذا المضافة. شكرا.

+1 لهذه الميزة. في هذه الأثناء ، استخدمت "الاختراق" التالي لجعله يعمل مع المحددات ذات السمة المتعددة:

var chosen = $("#MySelect").chosen().data("chosen");
var autoClose = false;

//...

var chosen_resultSelect_fn = chosen.result_select;
chosen.result_select = function(evt) {
    var resultHighlight = null;

    if(autoClose == false)
    {
        evt["metaKey"] = true;
        evt["ctrlKey"] = true;

        resultHighlight = chosen.result_highlight;
    }

    var result = chosen_resultSelect_fn.call(chosen, evt);

    if(autoClose == false && resultHighlight != null)
        resultHighlight.addClass("result-selected");

    return result;
};

+1

+1

+1

+1

كثيرا: +1:

الاختراق أعلاه لا يعمل. يبدو أن result_select هو undefined .
$("#inputField").chosen().result_select;
في كل من v1.1.0 و v1.0.0 .

عذرا ، الكود الصحيح هو:
$("#inputField").chosen().data("chosen").result_select

شكرا لك! هذا يعمل بشكل رائع. أخيرًا انتهى بي الأمر بهذا الرمز:

$chosen = $("#myChosenField").chosen();

var chosen = $chosen.data("chosen");
var _fn = chosen.result_select;
chosen.result_select = function(evt) {    
      evt["metaKey"] = true;
      evt["ctrlKey"] = true;
      chosen.result_highlight.addClass("result-selected");
      return _fn.call(chosen, evt);
};

لدي صفحة ديناميكية تنشئ مربعات اختيار متعددة بناءً على مدخلات المستخدم. يعمل الكود أعلاه من Jarnoleconte بشكل رائع ، إلا في حالة وجود تحديد فارغ ، مما ينتج عنه رسالة خطأ في وحدة التحكم:

خطأ في النوع غير معلوم: لا يمكن قراءة الخاصية "result_select" الخاصة بـ myfile.php غير معرف

في الوقت الحالي أرفقت هذا في عبارة if:

$chosen = $("#myChosenField").chosen();

if ($("#myChosenField").length) {
  var chosen = $chosen.data("chosen");
  var _fn = chosen.result_select;
  chosen.result_select = function(evt) {    
  evt["metaKey"] = true;
  evt["ctrlKey"] = true;
  chosen.result_highlight.addClass("result-selected");
  return _fn.call(chosen, evt);
  };
}

في حين أن هذا حل جيد في الوقت الحالي ، فأنا أيضًا "+1" لوجود هذا كخيار ، شيء على غرار ما تم اختياره: stay_open ، وزر "إغلاق" يتم إضافته إلى القائمة المنسدلة.

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

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

var chosen = $(chosenSelectClass).chosen().data('chosen');
var autoClose = false;
var chosen_resultSelect_fn = chosen.result_select;
chosen.search_contains = true;

chosen.result_select = function(evt) 
{
    var resultHighlight = null;

    if(autoClose === false)
    {
        evt['metaKey'] = true;
        evt['ctrlKey'] = true;

        resultHighlight = chosen.result_highlight;
    }

    var stext = chosen.get_search_text();

    var result = chosen_resultSelect_fn.call(chosen, evt);

    if(autoClose === false && resultHighlight !== null)
        resultHighlight.addClass('result-selected');

    this.search_field.val(stext);               
    this.winnow_results();
    this.search_field_scale();

    return result;
 };

هذا يعمل بشكل جيد حقًا. بفضل ronanquillevere : white_check_mark:

+1

شكرا للاختراق ، إنه يعمل بالفعل. لقد قمت فقط بإزالة this.winnow_results () ؛ الاتصال لتجنب تمييز أقرب خيار نشط. يبدو الآن أكثر ... الهدوء :-)

سيكون من الأفضل أن تكون قادرًا على إلغاء تحديد الخيارات مباشرة من القائمة. إنها الآن باللون الرمادي ولا يمكن إزالتها إلا باستخدام الزر X.

+1

+1

+1 ، هذا ضروري جدًا للقائمة المنسدلة متعددة الاختيارات.

هل هناك أي طريقة لإصلاح وظيفة ronanquillevere المنشورة عندما يكون هناك العديد من العناصر متعددة التحديد في صفحة واحدة؟

+1

+1

+1 ، السبب الرئيسي لاختيار متعدد هو القدرة على تحديد خيارات متعددة. يجب أن يدعم Chosen القيام بذلك بسرعة دون الحاجة إلى إعادة فتح قائمة التحديد لكل خيار. سيساعد هذا بشكل خاص في القائمة الطويلة حيث قد يضطر المستخدم إلى التمرير للعثور على الخيارات المطلوبة.

تم فتح هذا منذ عام 2013 ، لذلك قررت فقط استخدام Select2 بدلاً من ذلك.

+1

بالنسبة لأولئك الذين يستخدمون الزاوية المختارة ، ما عليك سوى وضع رمز ronanquillevere في الوظيفة initOrUpdate في التوجيه الزاوي المختار (سيتعين عليك الحصول على الكود المصدري بدلاً من استخدام bower / npm).

هذا ما فعلته:

             (function () {
                var autoClose              = false;
                var chosen_resultSelect_fn = chosen.result_select;
                chosen.search_contains     = true;
                chosen.result_select       = function (evt) {
                  var resultHighlight = null;

                  if (autoClose === false) {
                    evt['metaKey'] = true;
                    evt['ctrlKey'] = true;
                    resultHighlight = chosen.result_highlight;
                  }
                  var stext = chosen.get_search_text();
                  var result = chosen_resultSelect_fn.call(chosen, evt);

                  if (autoClose === false && resultHighlight !== null)
                    resultHighlight.addClass('result-selected');

                  this.search_field.val(stext);
                  this.winnow_results();
                  this.search_field_scale();
                  return result;
                };
              })();

+1

+1 - من المنطقي فقط أن عمليات التحديد المتعددة ذات الاحتمالية العالية للخيارات المتعددة تتوقع عدم إغلاق المربع. يعد CMD / ctrl + click ميزة رائعة ، لكنها ليست تجربة مستخدم جيدة.

+1 - لقد استبدلنا مؤخرًا خيارًا متعدد التحديد أقدم بـ Chosen وأحد الشكاوى الرئيسية التي نتلقاها من مستخدمينا هي أن الأمر يتطلب نقرات أكثر لتحديد عناصر متعددة في القائمة لأن القائمة المنسدلة تغلق في كل مرة. مثل الآخرين ، سنضيف اختراقًا حتى يظل مفتوحًا افتراضيًا للتحديد المتعدد. سيكون من الرائع حقًا أن يكون هذا أحد الخيارات.

+1

+1

+1 هذه ميزة حيوية. أي شخص على استعداد للمساعدة في العلاقات العامة؟

+1

مرحبًا يا شباب ، هل من تقدير متى سيكون هناك إصدار مناسب يحتوي عليه؟ او هل فاتني شيء؟

يبدو أن هذه الميزة التي تشتد الحاجة إليها كانت في الماجستير لمدة 3 أشهر حتى الآن.

ماذا عن الاصدار الجديد؟ :) :)

مرحبًا ، أحاول الاحتفاظ بالعديد من الاختيارات التي اختارها المستخدم بعد تحديث الصفحة / بعد عرض الصفحة.
لقد اخترت 5 مناطق (عناصر) متعددة وكلمة رئيسية رئيسية للبحث. غالبًا ما أرغب في البحث باستخدام كلمات رئيسية مختلفة ضمن التحديدات المتعددة نفسها. إنه ليس سهل الاستخدام للغاية إذا احتاج المستخدم إلى تكرار تحديدات متعددة. أنا أستخدم Chosen Jq lib. سيكون موضع تقدير أي مساعدة. - داتا

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

koenpunt ، هل يمكن أن توضح؟ لو سمحت!

الحل البديل إذا كنت بحاجة إلى إبقائه مفتوحًا طوال الطريق.
عند التحميل ، اتصل بهذا أولاً مفتوح
$("#" + selectId).trigger("chosen:open");

في selected.jquery.js توجد وظيفة:
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 }); } return this.results_showing = false; };

استبدلها بـ:
Chosen.prototype.results_hide = function() { return false; };

لقد فعلت ذلك على هذا النحو ، ابحث عن هذه الطريقة
Chosen.prototype.result_select
أضف في حالة أخرى

Chosen.prototype.result_select = function(evt) {
  ...
  if (!(this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey)))) {
    //stay open temporary solution
    if (this.max_selected_options <= 0 || (this.max_selected_options > 0 && this.max_selected_options <= this.choices_count())) {
      this.results_hide();
      this.show_search_field_default();
    }
  }
  ...
};

لست متأكدًا مما إذا كان خطأ أم أنه تم صنعه على هذا النحو. لدي 18 عنصرًا في التحديد المتعدد باستخدام "Ctrl" ولكن عندما أحاول تحديد العنصر الخامس عشر في القائمة ، يتم التمرير تلقائيًا إلى العنصر الأول غير المحدد. هل هناك أي مفتاح لإبقاء النافذة مفتوحة في آخر حالة؟

لقد استخدمت اختراق HarrisRobin وهو يعمل بشكل جيد مع التحديد الأول. لقد استخدمت عددًا متعددًا من مربعات التحديد باستخدام المربع المختار ولكن هذا الاختراق لا يعمل مع مربع التحديد الباقي من المربع الأول. هل من الممكن أن يساعدني أحد؟

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

اهلا جميعا،

هل تم تنفيذ هذه الميزة الآن في عام 2019؟ :)

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

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

Scalamoosh picture Scalamoosh  ·  8تعليقات

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

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

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

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