سؤال

أنا أستخدم الإكمال التلقائي من JQuery UI على موقع الويب الخاص بي ، وهو يعمل بشكل جيد ، لكنني أعيد تصميم النظام ، لذلك أحتاج إلى تغيير هذا. حاليا ، يفتح الإكمال التلقائي في أسفل الإدخال. ومع ذلك ، لا يمكنني إجباره على وضع مخصص ، لا مع jQuery أو CSS.

لقد جربت هذا:

    $('#search').autocomplete('widget').css({
        'margin-left': -200
        //or
        left: 200
    });

لقد حاولت أيضًا إضافة! مهم للقواعد ولكن لا يؤثر.

لقد حاولت أيضًا إضافة CSS إلى .ui-autocomplete ، دون أي نتيجة.

يبدو أنه عندما يفتح المربع ، فإنه يكتب كل هذه التغييرات. أي فكرة عن هذا؟ أنا حقا في حاجة إلى حل.

شكرا ، مارتي لين

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

المحلول

يمكنك توفير وظيفة اختيارية لـ Open () للقيام بذلك:

مثال:

 $("#search").autocomplete({ 
                            open: function(event, ui) 
                                  {$(this).next().css('left',
                                    function(index, value) {return 200+parseInt(value)});
                                  }
    });

... سيقوم بتعيين الموقف على 200 بكسل يسار الموضع كان عادة

نصائح أخرى

يفتح الإكمال التلقائي في نهاية DOM. لا تقترب على الإطلاق من مدخلات الزناد ... أفكر في النظر في فهرس الإدخال ، ثم العثور على الفهرس المقابل للتمويل التلقائي ، لكنني لا أعرف السبب- يبدو أنه ليس قويًا بما يكفي بالنسبة لي.

مثل NeosWF ، وجدت أن الإكمال التلقائي الخاص بي قد تم إدخاله بالقرب من قاع DOM. اعتمادا علي $(this).next() لتجد أنها هشة. بدلاً من this, ، أوصي باستخدام شيء أكثر تحديدا مثل 'ul.ui-autocomplete'. ها هي CoffeScript لنسختي:

jQuery ->
  $('#search').autocomplete
    open: (event, ui) ->
      $('ul.ui-autocomplete').css('left', (index, value) ->
        return 200 + parseInt(value))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top