2012-07-12 11 views
5

मेरे पास उसी रेडियो समूह में मेरे यूआई में 3 रेडियो बटन हैं। वे कर रहे हैं,कैसे पता चलेगा कि कौन सा रेडियो बटन चुना गया है?

var rbutton1 = app.createRadioButton('dist','5 miles'); 

var rbutton2 = app.createRadioButton('dist','10 miles'); 

var rbutton3 = app.createRadioButton('dist','25 miles'); 

ईवेंट हैंडलर समारोह में, चर, e.parameter.dist सही या गलत बस rbutton3 (पिछले रेडियो बटन) या चेक नहीं किया गया है कि क्या के आधार पर देता है। क्या रेडियो बटन का चयन करने के लिए कोई तरीका है?

उत्तर

2

रेडियो बटन समूह इस तरह काम करते हैं (डिजाइन द्वारा लक्षित के रूप में) का एकमात्र तरीका उन्हें FormPanel में उपयोग करके और फ़ॉर्म के सबमिट कार्रवाई से एक doPost पर नाम (अपने मामले में "dist") देखकर है ।

हालांकि कुछ ऐसे कामकाज हैं, जो नए क्लाइंट हैंडलर का उपयोग करते हैं जो इसे किसी भी पैनल पर रेडियो बटन का उपयोग लगभग उसी तरह से करते हैं। कृपया ट्रैकर पर this issue पर एक नज़र डालें। आप स्टार इस मुद्दे को भी अपडेट कर सकते हैं, इसके लिए अद्यतनों का ट्रैक रखने और इसके लिए वोट देने के लिए।

0

मैं का उपयोग करें:

eventData.parameter.source 

और addClickHandler का उपयोग कर परिवर्तन लेने।

आप इस कहीं

0

स्टोर करने के लिए इन बटनों एक विशेष या मोड में होना लगता है कर रहे हैं की जरूरत है। यदि ऐसा है, तो उन्हें एक ही नाम होना चाहिए। एक विस्तृत स्पष्टीकरण और उदाहरण कोड के लिए सर्ज के answer पर देखें।

0

इस बीच में मैं रेडियोबूटन को सेट करने के लिए एक वर्कअराउंड के साथ आया, इस उदाहरण में मैं एक सूची बॉक्स का उपयोग करता हूं लेकिन किसी भी अन्य डेटा का उपयोग किया जा सकता है।

यहाँ पूरा कोड है: (परीक्षण करने के लिए एक स्प्रेडशीट कंटेनर में)

function radiotest() { 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 
    var radioValue = app.createTextBox().setId('radioValue'); 
     radioValue.setId("radioValue").setName("radioValue"); 
    var listhandler = app.createServerHandler('listhandler').addCallbackElement(panel); 
    var list = app.createListBox().addChangeHandler(listhandler).setName('list');  
    for(var i = 1; i < 10; i++){ 
    var name = 'choice '+i; 
    list.addItem('Activate '+name,name) 
    var handler = app.createClientHandler().forTargets(radioValue).setText(name); 
    panel.add(app.createRadioButton('radioButtonGroup',name).addValueChangeHandler(handler).setId(name)); 
    } 
    panel.add(radioValue); 
    var getit=app.createButton("Valide").setId("val"); 
    panel.add(getit).add(list)     
    var handler = app.createServerHandler("valide") 
    handler.addCallbackElement(panel) 
    getit.addClickHandler(handler); 
    app.add(panel); 
SpreadsheetApp.getActiveSpreadsheet().show(app);// show app 
} 
// 
function valide(e){ ;// This function is called when key "validate" is pressed 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var RadioButton = e.parameter.radioValue;    
    sh.getRange('A1').setValue(RadioButton); 
    var app = UiApp.getActiveApplication(); 
    return app; 
}​ 

function listhandler(e){ ;// This function is called when listBox is changed 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var app = UiApp.getActiveApplication(); 
    var listvalue = e.parameter.list 
    var radioValue = app.getElementById('radioValue').setValue(listvalue) 
    sh.getRange('A2').setValue(listvalue); 
    var radiobutton = app.getElementById(listvalue) 
    radiobutton.setValue(true) 
return app; 
}​ 

चयनित radiobutton मूल्यों पाठ बॉक्स मूल्य में आता है और लिस्टबॉक्स चयन करने के लिए जो radiobutton सक्रिय होता है की अनुमति देता है ... यह दिखाता है इस

enter image description here

की तरह भी एक और दृष्टिकोण, के रूप में eddyparkinson e.parameter.source उपयोग करने के लिए है कि ने कहा नहीं है, लेकिन यह काम करता है केवल यदि हैंडलर सीधे रेडियो बटन पर असाइन किया गया है और 'सबमिट' बटन का उपयोग नहीं कर रहा है। कई मामलों में इसका उपयोग किया जा सकता है और कोड को (थोड़ा) थोड़ा हल्का बनाता है। यहां इस कोड का एक परीक्षण है

function radiotest2() { 
    var app = UiApp.createApplication(); 
    var panel = app.createVerticalPanel(); 
    var listhandler = app.createServerHandler('listhandler2').addCallbackElement(panel); 
    var list = app.createListBox().addChangeHandler(listhandler).setName('list');  
    var handler = app.createServerHandler("valide2") 
    handler.addCallbackElement(panel) 
    for(var i = 1; i < 10; i++){ 
    var name = 'choice '+i; 
    list.addItem('Activate '+name,name) 
    panel.add(app.createRadioButton('radioButtonGroup',name).setId(name).addClickHandler(handler)); 
    } 
    panel.add(list)     
    app.add(panel); 
SpreadsheetApp.getActiveSpreadsheet().show(app);// show app 
} 


function valide2(e){ ;// This function is called when a radioButton is selected 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var source = e.parameter.source; 
    var radioValue = ''; 
    if(source.match('choice')=='choice'){radioValue=source} 
    sh.getRange('A1').setValue(radioValue); 
    var app = UiApp.getActiveApplication(); 
    return app; 
}​ 

function listhandler2(e){ ;// This function is called when listBox is changed 
    var sh = SpreadsheetApp.getActiveSheet(); 
    var app = UiApp.getActiveApplication(); 
    var listvalue = e.parameter.list 
    sh.getRange('A2').setValue(listvalue); 
    var radiobutton = app.getElementById(listvalue) 
    radiobutton.setValue(true) 
return app; 
}​ 
संबंधित मुद्दे

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