2012-10-03 14 views
6

पर क्लिक करें बटन के क्लिक पर मैं क्लिक किए गए बटन से मेल खाने के लिए चयनित सूची में चयनित विकल्प को बदलना चाहता हूं। यह वही है मैं अब तक है, jsfiddleबटन पर चयनित विकल्प बदलना

$('#btnCityAuckland').click(function(){ 
    $('#City').val('A'); 
}) 

मैं कुछ jQuery वहाँ की क्या ज़रूरत है, लेकिन इसके शायद सही किया जा रहा बंद मील की दूरी पर यह है कि सरल किया जा नहीं कर सकते हैं।

उत्तर

14
$('#btnAuckland').click(function(){ 
    $('#City').val('A').trigger('change'); 
})​ 

स्पष्ट रूप से आप मूल्य निर्धारित करने के बाद .trigger() विधि को कॉल कर सकते हैं।

डेमो: http://jsfiddle.net/8RUBj/11/

संपादित
इसके अलावा, यह बेहतर है अगर आप data मूल्य, और वर्गों सेट करने के लिए विशेषताओं का उपयोग, और फिर आप एक ही बार में अपने सभी बटन क्या कर सकते हैं।

$('.select-change').click(function(){ 
    $('#City').val($(this).data('val')).trigger('change'); 
})​ 

डेमो वी 2: http://jsfiddle.net/8RUBj/15/

+0

बिल्कुल वही था जो मैं बाद में था। पहले नहीं देखा गया .trigger()। मैंने कुछ नया सीखा :) धन्यवाद ढेर! – Jamesil

+0

@ जेम्सिल - अपडेट की जांच करें। यह बहुत उपयोगी है। – ahren

3

आपका कोड सही है, सिर्फ इतना है कि आप $('#btnCityAuckland') गलत टाइप, यह वास्तव में है:

$('#btnAuckland') 

कार्य demo

तुम भी बटन के आधार पर विकल्प क्लिक किया चयन करते समय, बजाय हार्डकोड आईडी को स्वचालित कर सकता है है, तो जैसे:

$('div > a').click(function(){ //click handler for all city buttons 
    $("#City option:contains('"+$(this).text()+"')").attr("selected",true); 
    $("#City").selectmenu('refresh', true); //Refresh to show name on select 
})​ 

कार्य demo

+0

हाँ मूल्य बदलता है, लेकिन यह एक दृश्य परिवर्तन नहीं है। (चयन को अद्यतन नहीं किया गया है और इसे मैन्युअल रूप से ट्रिगर करने की आवश्यकता है। धन्यवाद jQuery मोबाइल।) – ahren

+0

धन्यवाद नेल्सन, और पूरी तरह से सहमत हैं। – Jamesil

+0

@ जेम्सिल मैंने ताज़ा कॉल को जोड़ा है ताकि चयन में बदलाव हो। आप इसे अपने अंतिम कोड में देख सकते हैं, मेरा अद्यतन उत्तर देखें। – Nelson

1

आप jQuery मोबाइल अपने कोड का उपयोग नहीं कर रहे थे के रूप में काम करेगा। jQuery मोबाइल के साथ आप इस प्रकार उस पर .selectmenu("refresh") फोन करके छद्म चयन ताज़ा कर सकते हैं:

$('div[data-role="controlgroup"] a').click(function(){ 
     $('#City').val($(this).text().charAt(0)).selectmenu("refresh"); 
}); 

डेमो: http://jsfiddle.net/8RUBj/18/

ध्यान दें कि आप प्रत्येक बटन के लिए एक अलग क्लिक हैंडलर आवंटित करने के लिए की जरूरत नहीं है: प्रदर्शन उद्देश्यों के लिए मैंने कोड को और अधिक सामान्य बनाने का एक बदमाश तरीका दिखाया है, जैसे कि यह आपके एचटीएमएल को बदलने के बिना काम करेगा, लेकिन आप data- विशेषताओं या बटन को कुछ जोड़ सकते हैं ताकि यह इंगित किया जा सके कि प्रत्येक के साथ कौन सा मूल्य जुड़ा हुआ है।

More information about jQuery Mobile select methods

+0

+1 - पहले चार और चयन मूल्य के बीच सहसंबंध को नोटिस नहीं किया! – ahren

+0

धन्यवाद @ahren। जाहिर है कि पहली पत्र की बात तब तक काम नहीं करेगी जब एक ही पत्र से शुरू होने वाले अतिरिक्त शहर थे क्योंकि उन्हें चयन में अलग-अलग मूल्य रखना पड़ता था, लेकिन जैसे मैंने ऊपर कहा था कि कोड बनाने के लिए सिर्फ एक तरीका था अधिक सामान्य ... – nnnnnn