سؤال

انا استخدم JQuery.AutoCowle (1.02) في مربع بحثي وأريد بالضبط سلسلة وسلسلة فرعية مطابقة. أنا لا أهتم (حتى الآن!) حول حمولة قاعدة البيانات، أنا سعيد لأنها لإطلاق النار قبالة استفسار كل ضغط المفاتيح وتجاوز التخزين المؤقت تماما - أنا فقط لا أريد أي شيء غاب عنه.

تحقيقا لهذه الغاية حاولت الإعداد Cachelength = 1., ، الحد الأدنى المسموح به، ولكن وظيفة الإكمال التلقائي ترفض إطلاق طلب الحصول على طلب لكل مفتاح.

searchbox          GET_request

   'a'       ->    http://localhost/service_search_request?q=a
   'ar'      ->    http://localhost/service_search_request?q=ar
   'ars'     ->    http://localhost/service_search_request?q=ars

بدلا من ذلك، يرسل الأول والثالث ويفتقد الثاني، مما أتاح لي النتائج الخاطئة ل "AR": - / لقد قمت بمسح ذاكرة التخزين المؤقت والدورات، لكن يبدو أن نوعا من التخزين المؤقت لا يزال يحدث. AFAIK ليس لدي أي ما يرام وانا منع المنعشة في كل مرة. يبدو أنه من المحتمل أن يكون هذا السلوك من JQuery.AutoCowle نفسه.

لذلك أسئلتي هي ...

أ) هل هذا يبدو من المحتمل؟ أي هي ميزة، أو ربما خطأ؟

ب) إذا كان الأمر كذلك هل هناك طريقة نظيفة حولها؟ ...

ج) إذا لم يكن الأمر كذلك، فما التلقائي الذي تستخدمه بدلا من ذلك؟

بطبيعة الحال د) لا أنت فقط تستخدمه بشكل غير صحيح أنت douche! هو دائما احتمال، والثمني الذي أفضل أن قضى وقتا في النزول في هذا الطريق - على افتراض أنه يأتي مع رابط إلى المستندات التي فشلت في العثور عليها / قراءة!

هتافات،

حاضر :)

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

المحلول

أتساءل لماذا Cachelength. لا يعمل، ولكن واجه مشكلة في الإكمال التلقائي أيضا. IMHO، هناك أخطاء فيها. ومع ذلك، في قائمة الخيارات, ، هناك matchsubset. يمكنك ضبطها على false.

تعديل:في مكان ما حول السطر 335 هو وظيفة تسمى "الطلب". يمكنك إضافة بعض رسائل التصحيح إليها، لمعرفة ما يحدث: (ملاحظة: تحتاج Firebug. سيتم تثبيت أو "وحدة التحكم" غير معروفة)

function request(term, success, failure) {

    console.debug("ac request...");

    if (!options.matchCase)
        term = term.toLowerCase();

    var data = cache.load(term);

    console.debug("ac request 1, loaded data from cache: " + data + " term: " + term);

    // recieve the cached data
    if (data && data.length) {
        success(term, data);
    // if an AJAX url has been supplied, try loading the data now
    } else if( (typeof options.url == "string") && (options.url.length > 0) ){

        console.debug("ac request 2, data is not in the cache, request it");

يمكن بسهولة استخدام "flushcache" في الوظيفة التي يمكنك إرفاقها / تعيينها كخيارات. لقد استخدمت هذا، لمسح ذاكرة التخزين المؤقت، إذا كان قد يكون هناك المزيد من البيانات في الخلفية:

formatItem: function (data,i,n,value){
    if(i === (this.max -1)){
        console.debug("flushCache");
        jQuery(this).flushCache();
    }

    return data[1] + " (" + data[0] + ")";
}

نصائح أخرى

أواجه نفس المشكلة. التخزين المؤقت لا يعمل على الرغم من أنني قمت بتعيين الخيار Cachelength إلى 1.

مع الحل الخاص بك لاستدعاء وظيفة Flushcache بعد كل مصطلح مطبوع يعمل. لم أستطع استخدام:

if(i === (this.max -1)){

منذ أن كان "أنا"، على سبيل المثال 1 بعد التصفية ولكن "this.max" لا يزال 25 حيث أدى استعلام الخلفية الأصلي إلى 25 صفا عاد.

ومع ذلك, هذا الخطأ فقط يظهر عند كتابة الكلمات التي تحتوي على الأحرف السويدية "Å"، "Ä" أو "Ö". لذلك ربما يعمل النقد كما هو متوقع ولكن ليس بهذه الشخصيات الخاصة.

على أي حال. كان الحل بالنسبة لي هو دائما استدعاء عنصر التحكم Flushcache في وظيفة FormatItem ():

function formatItem(row, position, n, term) {

    if($("#keywords-h").length > 0){
        $("#keywords-h").flushCache();
        }

        // format Item
        return "<span>" + row[0] + "</span>";
}

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

من الواضح أن وصلت إلى هذا 18 شهرا، ولكن

Cachelength: 0.

في الخيارات عملت بالنسبة لي. لذلك ربما تم إصلاح أحدث إصدار الخطأ؟

هذا عملت بالنسبة لي.

function requestData(q) {
   if (!options.matchCase) q = q.toLowerCase();

   //-- I turned off this line
   // var data = options.cacheLength ? loadFromCache(q) : null;

   //-- And added this line of code
   var data = null;

هناك خيار لتعطيل مطابقة مجموعة فرعية على سبيل المثال

$("#query").autocomplete(
    url,
    {
        matchSubset: false
    }
)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top