Pregunta

Estoy usando autocompletar de jQuery UI en mi sitio web, y se está trabajando muy bien, pero estoy rediseño del sistema, por lo que necesito para hacer éste cambio. En la actualidad, la función de autocompletar se abre en la parte inferior de la entrada. Sin embargo, no puedo forzarlo a una posición de costumbre, ni con jQuery o CSS.

He intentado esto:

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

También trató añadiendo! Importante excedía reglas, pero no afecta.

También he intentado añadir CSS para .ui-autocompletar, sin ningún resultado.

Parece que cuando se abre la caja, sobrescribe todos estos cambios. Cualquier idea sobre esto? Estoy realmente en la necesidad de una solución.

Gracias, Martti Laine

¿Fue útil?

Solución

Se puede proporcionar una función opcional para open () para hacer esto:

Ejemplo:

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

... fijará la posición 200 píxeles a la izquierda de la posición que habría sido normalmente

Otros consejos

Mi autocompletar se abre al final de la DOM. No está cerca del todo a la entrada de disparo ... Estoy pensando en buscar en el índice de activación de entrada y, a continuación, la búsqueda de índice correspondiente de la función de autocompletar, pero yo no sé por qué- es parece lo suficientemente robusta para mí no.

Al igual que NeoSwf, he encontrado que mi autocompletar se está insertando en la parte inferior de la DOM. Dependiendo de $(this).next() de encontrarlo es frágil. En lugar de this, le recomiendo usar algo más específico como 'ul.ui-autocomplete'. Aquí está la CoffeeScript para mi versión:

jQuery ->
  $('#search').autocomplete
    open: (event, ui) ->
      $('ul.ui-autocomplete').css('left', (index, value) ->
        return 200 + parseInt(value))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top