2010-04-01 28 views
27

utilizzando jQuery UI 1.8 cercando di completamento automaticojQuery UI posizionamento di completamento automatico sbagliato

Tutto funziona a parte che l'interfaccia utente-menu non è posizionato sotto il mio elemento di input, ma piuttosto in alto a sinistra.

Qualcuno si è imbattuto in questo problema?

Ecco il mio html:

<div id="search"> 
    <div id="searchFormWrapper"> 
     <form method="post" name="searchForm" id="searchForm" action="/searchresults"> 
     <label for="searchPhrase" id="searchFor"> 
      Search for</label> 
     <input name="searchPhrase" id="searchPhrase" type="text" /> 
     <label for="searchScope" id="searchIn"> 
      in</label> 
     <select name="searchScope" id="searchScope"> 
      <option value="">All Shops</option> 
      ... 
     </select> 
     <input type="image" name="submitSearch" id="submitSearch" src="/images/buttons/search.gif" 
      alt="Search ..." /> 
     </form> 
     <br class="clear" /> 
    </div> 
</div> 

e qui è il mio css:

#search 
{ 
width:100%; 
margin:0; 
padding:0; 
text-align:center; 
height:36px; 
line-height:36px; 
background:#666 url(/images/interface/info_bar_bg.gif) repeat-x top left; 
overflow:hidden; 
font-size:12px; 
} 
#searchFormWrapper 
{ 
width:520px; 
height:36px; 
overflow:hidden; 
margin:auto; 
padding:0; 
} 
label#searchFor 
{ 
display:block; 
float:left; 
width:80px; 
padding:0 5px 0 0; 
margin:0 0 0 0; 
text-align:right; 
} 
label#searchIn 
{ 
display:block; 
float:left; 
width:20px; 
padding:0 5px 0 0; 
margin:0 0 0 0; 
text-align:right; 
} 
#searchPhrase 
{ 
display:block; 
float:left; 
width:120px; 
margin:7px 0 0 0; 
padding:0; 
} 
#searchScope 
{ 
display:block; 
float:left; 
width:120px; 
margin:7px 0 0 0; 
padding:0; 
} 
#submitSearch 
{ 
display:block; 
float:left; 
margin:7px 0 0 10px; 
padding:0; 
} 

e qui è il mio javascript:

$(document).ready(function() 
{ 
    $("#searchPhrase").autocomplete(
    { 
     source: "/search?json", 
     minLength: 2 
    }); 
}); 
+0

Sei sicuro di includere i file CSS dell'interfaccia utente jQuery? – Pointy

+0

Sì. Controllato. L'elenco dei menu ui è tutto formattato correttamente. Solo non posizionato a destra ... – autonomatt

+0

Hai un link a una versione da guardare? Suggerirei di rimuovere tutto il CSS diverso dal CSS per il completamento automatico per controllare che ci siano altre regole in conflitto. – Alex

risposta

35

Woohoo. Trovato il colpevole:

<script type="text/javascript" src="/scripts/jquery/132/jquery-1.4.2.min.js"></script> 
      <script type="text/javascript" src="/scripts/jquery/132/jquery-ui-1.8.custom.min.js"></script> 
      <script type="text/javascript" src="/scripts/jquery/100325/jquery.dimensions.js"></script> 
      <script type="text/javascript" src="/scripts/jquery/100325/jquery.tooltip.js"></script> 

Non includere jquery.dimensions.js. Presumo che sia già in jquery-ui.js ... comunque, ha risolto il mio problema.

Per ultima jQueryUI è ora necessario includere jquery.ui.position.js

+2

Oh uomo, con il mio progetto era il contrario: ho dovuto rimuovere il vecchio jquery.dimensions.pack.js, poiché "le dimensioni" ora fanno parte di jQuery.UI. Grazie per il tuo contributo! – RSeidelsohn

+0

Incredibile! Stavo per iniziare a selezionare i miei CSS finché non ho trovato questo post! Saluti! – Encoder

+1

Questo mi ha ricordato che jQuery 1.8.0.min e UI 1.8.10 non corrispondono. Puntare alla versione corretta dell'interfaccia utente (1.8.23) ha risolto il problema. – dezso

1

messo

position: relative; 

all'interno di

#searchFormWrapper 
+0

Provato, ma non è una gioia – autonomatt

11

ho avuto un problema simile, e dopo una ricerca ho scoperto che mi mancava un JS per risolvere questo problema. Nel caso qualcuno si fermi assicurati di avere anche lo script "jquery.ui.position.js".

Vedi http://jqueryui.com/demos/autocomplete/ sotto le dipendenze: UI core UI Widget UI Posizione

+0

Questo ha funzionato per me. Non avevo dimensions.js incluso, ma stavo ancora vedendo il completamento automatico fuori posto. Una volta ho aggiunto il position.js, ha funzionato come previsto. –

+0

@chris grazie caro mi ha salvato – Devjosh

+0

Salvato il mio giorno :-) –

0

Un altro problema simile, se si sta utilizzando una CDN per servire i file jQuery, assicurarsi di utilizzare una versione specifica, vale a dire:

//ajax.googleapis.com/ajax/libs/jquery/1.7.2/ 

piuttosto che la versione 'ultima':

//ajax.googleapis.com/ajax/libs/jquery/1/ 

Th Verrà rimossa la possibilità di conflitti nelle versioni future di jquery, che possono spesso interrompere un'app quando la versione "più recente" su jQuery viene aggiornata sul CDN.

4

Semplicemente l'aggiornamento all'ultima JQueryUI ha fatto il trucco per me. Ho iniziato ad avere questo problema dopo che sono passato a Twitter Bootstrap (e anche l'ultimo JQuery che penso).

16

Ho semplicemente cambiato il mio jquery-ui.min.js con l'ultima versione e ha corretto il posizionamento.

da 1.8.16 a 1.8.23 e ha funzionato!

+1

Stavo usando jquery-ui 1.8.18 e aggiornato a 1.8.23 e ha corretto il mio problema. – ctlockey

+0

L'aggiornamento alla v.1.9.2 ha interrotto il mio codice. L'aggiornamento dal 1.8.17 all'1.8.23 ha risolto il problema. Le versioni precedenti possono essere trovate su gQuub di jQuery UI: https://github.com/jquery/jquery-ui/releases –

+0

Grazie! Lavoro come fascino :) – Phoenician

4

So che questo è un vecchio post, ma ho avuto questo problema e l'ho risolto in un altro modo.

Avevo aggiornato jQuery, che ha causato la visualizzazione del menu a left:0;top:0; su window, piuttosto che sotto il mio input.

L'aggiornamento di jQuery UI l'ha risolto all'istante. Spero che questo sia utile a qualcuno.

+0

Hai appena fatto la mia notte! Grazie! – jerrygarciuh

3

Aggiorna l'interfaccia utente di Jquery e gli script jQuery nel progetto, risolverà qualsiasi conflitto e il problema verrà risolto.

Problemi correlati