2011-11-19 11 views
12

Sto utilizzando un set di pulsanti dell'interfaccia utente jQuery (basato su alcuni pulsanti di opzione). Tutto funziona in modo soddisfacente, tranne che quando si fa clic su uno dei pulsanti non accade nulla (proprio come se non l'avessi mai fatto clic). Ho pensato che forse era forse un problema con la mia implementazione così sono andato al sito dimostrativo:Interfaccia utente jQuery - i pulsanti pulsanti non funzionano sempre al primo clic

http://jqueryui.com/demos/button/#radio

E passato un po 'di tempo cliccando in giro lanciando tra le diverse scelte. Ho avuto lo stesso problema! A caso il clic verrebbe ignorato!

mi sono imbattuto in questo sito:

http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/

che rotolò la propria versione e sono stato in grado di replicare lo stesso problema. Il che mi porta a credere che ci sia qualche piccola stranezza con l'implementazione dell'interfaccia utente jQuery?

Qualcuno ha visto questo? Ho passato un po 'di tempo a cercare di trovare gli altri con lo stesso problema e non ho trovato alcuna menzione. Qualcun altro vede lo stesso problema?

risposta

8

Questo succede anche a me.

Penso che il problema è che devi tenere il tuo mouse fermo quando fai clic sul pulsante, altrimenti non funzionerà.

Ad esempio, prova a fare clic sul pulsante mentre muovi il mouse a passo lento e regolare. Il pulsante non funzionerà se il mouse non si muove appena. Prova anche a trascinare il pulsante anche solo di un pixel, quindi rilasciando.

Il sito che hai trovato funzionante sembra utilizzare mousedown per evitare questo problema. Stanno anche utilizzando una versione precedente dell'interfaccia utente jQuery, che potrebbe essere un fattore.

+1

Stesso qui, è terribile! C'è un bug jquery su questo? – ack

+0

ya mi sembra: http://bugs.jqueryui.com/ticket/5454 –

+1

@NadirMuzaffar Penso che questa sia una migliore richiesta di bug per catturare i dettagli: http://bugs.jqueryui.com/ticket/7665 – Brombomb

7
$("#radio").buttonset(); 
$("#radio").find("label").unbind("mouseup"); 

perché nel codice sorgente jquery si trova:

.bind("mouseup" + this.eventNamespace, function(event) { 
    if (options.disabled) {return; } 
    if (startXPos !== event.pageX || startYPos !== event.pageY) { 
        clickDragged = true; 
    } 
} 
+0

Ho provato questa soluzione alternativa: funziona: quando si sposta il mouse mentre si fa clic, lo stato del pulsante è ancora attivo. Grazie! – Kel

+0

Questo ha funzionato bene per Chrome e IE, ma durante la lettura di un collegamento pubblicato sopra ho notato un commento in [link] (http://bugs.jqueryui.com/ticket/7665) che questo ha a che fare con il comportamento di Firefox in particolare. Durante i test ho scoperto che il lavoro non vincolante sembra avere strani effetti negativi in ​​Firefox. – Nato

+0

Sfortunatamente, su Firefox tutto ciò ha fatto si creava l'illusione che funzionasse (modifica grafica degli input ma non innesca l'evento change) – pete

Problemi correlati