Force de jQuery UI déplacer saisie semi-automatique?
-
30-09-2019 - |
Question
J'utilise autocomplete de jQuery UI sur mon site, et cela fonctionne très bien, mais je suis la refonte du système, donc je dois faire ce seul changement. À l'heure actuelle, la saisie semi-automatique ouvre sur le fond de l'entrée. Cependant, je ne peux pas le forcer à une position personnalisée, ni avec jQuery ou CSS.
J'ai essayé ceci:
$('#search').autocomplete('widget').css({
'margin-left': -200
//or
left: 200
});
J'ai aussi essayé d'ajouter! Important de lLa règles, mais aucun effet.
Je l'ai également essayé d'ajouter à .ui-css autocomplete, sans aucun résultat.
Il semble que lorsque la boîte ouvre, elle écrasera tous ces changements. Toute idée à ce sujet? Je suis vraiment dans le besoin d'une solution.
Merci, Lainé Martti
La solution
Vous pouvez fournir une fonction en option pour open () pour faire ceci:
Exemple:
$("#search").autocomplete({
open: function(event, ui)
{$(this).next().css('left',
function(index, value) {return 200+parseInt(value)});
}
});
... va définir la position à 200px gauche de la position qu'il aurait été normalement
Autres conseils
Mon autocomplete ouvre à la fin du DOM. Pas du tout près de l'entrée de déclenchement ... Je pense à regarder l'indice de déclenchement d'entrée, puis trouver l'indice correspondant de la saisie semi-automatique, mais je ne sais pas pourquoi- son ne semble pas assez robuste pour moi.
Comme NeoSwf, je trouve que mon autocomplete était inséré près du fond du DOM. Selon $(this).next()
pour le trouver est fragile. Au lieu de this
, je recommande d'utiliser quelque chose de plus spécifique comme 'ul.ui-autocomplete'
. Voici le CoffeeScript pour ma version:
jQuery ->
$('#search').autocomplete
open: (event, ui) ->
$('ul.ui-autocomplete').css('left', (index, value) ->
return 200 + parseInt(value))