سؤال

لسبب ما ، توقف الإكمال التلقائي لـ JQuery UI عن العمل بالنسبة لي. أحصل على نفس الخطأ كما هو موضح في صفحة الويب هذه.

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

شكرًا!

انا استخدم Jquery UI Autocomplete للحصول على قائمة بالأسماء. لكن لسبب ما أتلقى خطأ:

alt text

$('#repName').removeAttr('readonly').focus(function () {
                   $(this).val('');
               }).autocomplete({
                   source: function (request, response) {
                       tagId = $('#TagId').val();
                       $.ajax({
                           url: '/Developement/GetRepName', type: 'POST', dataType: 'json',
                           data: { searchText: request.term, maxResults: 10, tagId: tagId },
                          success: function (data) {
                              response($.map(data, function (item) {
                                  return {
                                      label: item.Name,
                                      value: item.RepId,
                                      id: item.RepId
                                  }
                              }))
                          }
                      })
                  },
                  select: function (event, ui) {
                      commissionAllicationModifications(ui.item.id, 0, 'A');
                  }
              });

ليس لدي أدنى فكرة عن سبب حدوث هذا. أنا أستخدم jQuery UI 1.8.1.

سأكون أقدر أي نوع من المساعدة في هذا.

إنه يأتي من ملف jQuery UI 1.8.1 ، وتحديداً jquery ui explete 1.8.1.

 .menu({
               focus: function (event, ui) {
                   var item = ui.item.data("item.autocomplete");
                   if (false !== self._trigger("focus", null, { item: item })) {
                       // use value to match what will end up in the input, if it was a key event
                       if (/^key/.test(event.originalEvent.type)) {
                           self.element.val(item.value);
                       }
                   }
               },
               selected: function (event, ui) {
                   var item = ui.item.data("item.autocomplete");
                   if (false !== self._trigger("select", event, { item: item })) {
                       self.element.val(item.value);
                   }
                   self.close(event);
                   // only trigger when focus was lost (click on menu)
                   var previous = self.previous;
                   if (self.element[0] !== doc.activeElement) {
                       self.element.focus();
                       self.previous = previous;
                   }
                   self.selectedItem = item;
               },
*                blur: function (event, ui) {
*                    if (self.menu.element.is(":visible")) {
*                        self.element.val(self.term);
*                   }
*               }
           })
           .zIndex(this.element.zIndex() + 1)
           // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
           .css({ top: 0, left: 0 })
           .hide()
           .data("menu");

إنه غريب على الرغم من أن هذا يعمل بلا عيب في مشروع آخر. ما لاحظته هو عندما يضرب الكود قسم [starred] ، فإن قسم Self.menu غير محدد. شيء آخر من الملاحظة هو أنه لا يرسل الطلب. كنت أفكر في أنها قد تكون وظيفة التركيز الخاصة بي.

.focus(function () {
     $(this).val('');

لكنه ليس كذلك. شكرا لك على مساعدتك.

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

المحلول

اتضح أنني قمت بتضمين مكون إضافي تم تعريفه $.fn.menu وهذه الفوضى المطاورة. لقد غيرته إلى $.fn.fg_menu وتم حل المشكلة.

نصائح أخرى

ما هو إصدار JQuery Core الذي تستخدمه؟

أنا أعرف خطأ يتعلق بـ الكشف المرئي وعلاقة إلى IE8. إذا كان ذلك ممكنًا ، هل يمكنك الترقية إلى أحدث jQuery على جهاز اختبار ومعرفة ما إذا كان ذلك يحل مشكلتك؟

إذا كنت لا تشعر بالترقية ، فيمكنك أيضًا محاولة اختراق jQuery (قبيح!) - مع هذا:

if (self.menu.element.is(":visible"))

يصبح

if (!(self.menu.element.css('display') == 'none'))

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