2014-11-17 4 views
14

द्वारा कोई विशिष्ट विकल्प के लिए एक jQuery यूआई selectmenu सेट मैं निम्नलिखितजावास्क्रिप्ट

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

की तरह एक selectmenu यह अच्छा मैं jQuery यूआई v1.11.2 का उपयोग करने के लिए है।

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

मैं अब तक

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

जो जवाब के रूप में 'रैखिक' में जो परिणाम लटकती का मूल्य पढ़ सकते हैं। मैं

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

का उपयोग कर मान को 'वर्ग' पर भी सेट कर सकता है जो सही ढंग से 'वर्ग' का उत्तर देता है। लेकिन (!!!) ड्रॉपडाउन स्क्रीन पर इसे प्रदर्शित नहीं करता है। तो वास्तव में मैं मूल्य सेट और पढ़ सकता हूं, लेकिन दृश्य प्रतिनिधित्व नहीं बदलता है - विजेट रीफ्रेश नहीं होता है। मैंने .change() फेंकने के लिए कहीं और पढ़ा है लेकिन बिना किसी प्रभाव के। मैंने jQuery UI Selectmenu value set dynamically does not change visible selected value जैसे उत्तरों की भी कोशिश की लेकिन असफल रहा। त्रुटि संदेश Error: no such method 'value' for selectmenu widget instance में कोई भी $('#scale').selectmenu('value', 'square'); रीसेट करता है।

कोई भी इसे किसी नए मूल्य पर सेट करने के बाद विजेट को रीफ्रेश करने में सहायता कर सकता है?

+2

यह काम करना चाहिए क्योंकि आप इसे उम्मीद करते हैं कि आप केवल 'रीफ्रेश'] (http:/'.val()': '$ (" # scale ") का उपयोग करने के बाद /api.jqueryui.com/selectmenu/#method-refresh)। selectmenu (" ताज़ा करें ");' – blgt

+0

यह काम करता है! बहुत बहुत धन्यवाद। – Steevie

+0

@blgt कृपया इसे उत्तर के रूप में पोस्ट करें। टिप्पणियों में जवाब देकर अनुत्तरित प्रश्नों को न छोड़ें ... –

उत्तर

39

के रूप में आप इसे अगर आप सिर्फ .val() उपयोग करने के बाद refresh फोन करने की उम्मीद है यह काम करना चाहिए:

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

इस का कारण यह है कि .val() समारोह है, जबकि विजेट jQueryUI का हिस्सा है jQuery द्वारा प्रदान की जाती है। [संभवतः $ .ui लेखकों ने $ कार्यक्षमता को बदलना नहीं चाहते थे, हालांकि यह मेरी हिस्से पर पूरी तरह से अनुमान है]

संबंधित मुद्दे