2014-11-17 9 views
14

mam selectmenu jak na poniższymUstaw selectmenu jQuery UI do określonej opcji przez javascript

<select name="scale" id="scale"> 
    <option selected>linear</option> 
    <option>root</option> 
    <option>square</option> 
</select> 

Żeby było miło używam jQuery UI v1.11.2.

$('#scale').selectmenu(); 

mogę teraz odczytać wartość z rozwijanej przez

alert($('#scale').val()); 

co skutkuje „liniowy” jako odpowiedź. Mogę także ustawić wartość na "kwadrat", używając wartości "kwadrat", która prawidłowo nadaje odpowiedź "kwadrat". Ale (!!!) lista nie wyświetla tego na ekranie. Tak więc mogę ustawić i odczytać wartość, ale reprezentacja wizualna się nie zmienia - widżet nie odświeża się. Czytałem gdzieś rzucić .change(), ale bez żadnego efektu. Próbowałem również odpowiedzi, takich jak w jQuery UI Selectmenu value set dynamically does not change visible selected value, ale nie powiodło się. Każdy kod $('#scale').selectmenu('value', 'square'); jest wyświetlany w komunikacie o błędzie Error: no such method 'value' for selectmenu widget instance.

Czy ktoś może pomóc odświeżyć widget po ustawieniu go na nową wartość?

+2

Powinno działać tak, jak się spodziewacie, jeśli po prostu zadzwonisz ['odśwież'] (http://api.jqueryui.com/selectmenu/#method-refresh) po użyciu '.val()': '$ (" # scale "). selectmenu (" odśwież ");' – blgt

+0

To działa! Dzięki wielkie. – Steevie

+0

@blgt proszę zaksięgować to jako odpowiedź. Nie pozostawiaj pytań bez odpowiedzi, odpowiadając w komentarzach ... –

Odpowiedz

39

Powinien działać jak można oczekiwać, że jeśli po prostu zadzwonić refresh po użyciu .val():

$('#scale').val('square'); 
$("#scale").selectmenu("refresh"); 

Powodem tego jest to, że funkcja .val() jest przez jQuery, podczas gdy widżet jest częścią jQueryUI. [Prawdopodobnie autorzy $ .ui nie chcieli zmienić funkcjonalności $, chociaż jest to czysto spekulacja z mojej strony]

Powiązane problemy