2009-01-05 5 views
7

J'ai un peu de difficulté à accéder à la valeur du bouton radio sélectionné dans un radiogroupe. J'ai essayé un certain nombre d'approches différentes basées sur la discussion dans d'autres messages sur le forum et sur le web. Malheureusement, ils n'ont pas été assez chanceux (ou qualifiés) pour le faire fonctionner. Basé sur la configuration FormPanel suivante j'espérais que quelqu'un pourrait me montrer comment obtenir la valeur de la radio sélectionnée dans le groupe 'mainPhone'.Ext RadioGroup - Comment accéder à la valeur du bouton radio sélectionné?

Merci!

Je voulais mettre à jour pour indiquer que j'ai pu obtenir une réponse de stackoverflow alors que les forums EXT-JS ne m'ont pas aidé. Way to go stackoverflow!

Matt

function createForm(elem) { 
var myForm2 = new Ext.form.FormPanel({ 
    renderTo:elem, 
    width:425, 
    frame:true, 
    style:"margin: 10px auto 10px auto;", 
    items: [{xtype:'fieldset', 
      title: 'Contact Info', 
      autoHeight:true, 
      items :[new Ext.form.RadioGroup({ 
         fieldLabel: 'Main Phone', 
         vertical: false, 
         id:"mainPhone", 
         items: [ 
          {boxLabel: 'Home', name: 'id-1', inputValue: 'H', checked:true}, 
          {boxLabel: 'Work', name: 'id-1', inputValue: 'W'}, 
          {boxLabel: 'Other', name: 'id-1', inputValue: 'O'} 
         ]  

        }), 
        new Ext.form.TextField({ 
        id:"frm_CreateCustomerHomePhone", 
        fieldLabel:"Home Phone", 
        width:275, 
        allowBlank:true 
       }), 
       new Ext.form.TextField({ 
        id:"frm_CreateCustomerWorkPhone", 
        fieldLabel:"Work Phone", 
        width:275, 
        allowBlank:true 
       }) 
        new Ext.form.TextField({ 
        id:"frm_CreateCustomerOtherPhone", 
        fieldLabel:"Other Phone", 
        width:275, 
        allowBlank:true 
       }) 
    ]}]});    
} 

Répondre

9

C'est quelque chose d'une conjecture sauvage, mais que diriez-vous:

myForm2.getForm().getValues()['id-1']; 
+0

Celui-ci l'a fait! Merci beaucoup – Matty

-2
function get_radio_value() 
{ 
    for(var i=0; i < document.myForm.mainPhone.length; i++) 
    { 
     if(document.myForm.mainPhone[ i ].checked) 
     { 
      return document.myForm.mainPhone[ i ].value; 
     } 
    } 
} 
5

La méthode getValue() sur le groupe radio lui-même renvoie l'objet qui est vérifié, le cas échéant, sinon il renvoie undefined. (Par la façon dont j'ai défini la valeur au lieu de inputValue pour mes boîtes, bien que je ne pense pas que cela fasse une grande différence, peut-être que c'est le dernier "getValue"), j'utilise extjs 3.0, et ma configuration de radiogroup est légèrement différente de la vôtre.

var checkedItem = Ext.getCmp('mainPhone').getValue(); 

if (checkedItem == undefined) return ''; 

return checkedItem.getGroupValue(); 
// The getGroupValue will return the value of the checked option in a group, 
// unfortunately, it only seems to work on the items and not the radiogroup 
// itself 
1

si vous voulez obtenir la valeur spécifique du champ, utilisez

myForm2.getForm().findField('id-1').getGroupValue(); 
3

Je sais que cette question est vieux, mais j'ajoute cette référence. Le snipit suivant est valable pour Ext 2.2 afaik.

Ext.getCmp("mainPhone").items.get(0).getGroupValue(); 
0

Je ne sais pas si cela est trop simple, mais j'ai pu accéder à la valeur (en poste 3.3.1) en utilisant la propriété « InputValue ».

var radio = ...; 
var value = radio.inputValue; 
2

La réponse de Lo-Tan fonctionne pour moi. J'utilise aussi extjs 2.2.1 Comme moi vous ne pouvez pas avoir un ext.Form.Formpanel mais juste une boîte de recherche et un radiogroup. J'utilise ce code pour obtenir la valeur du groupe radio.

Mon groupe radio:

var begrens_sok = new Ext.form.RadioGroup({ 
fieldLabel: 'Begrens søket', 
columns: 1, 
name: 'sokspecs', 
id:'sokspecs', 
items: [ 
     {boxLabel: 'Scientific name', name: 'sokspec', inputVale:'SN'}, 
     {boxLabel: 'Norsk navngruppe', name: 'sokspec', inputValue:'NNG'}, 
     {boxLabel: 'Norsk navnart', name: 'sokspec', inputValue:'NNA'}, 
     {boxLabel: 'Prosjektsøk', name: 'sokspec', inputValue:'PROJ'}, 
     {boxLabel: 'Fritekst søk', name: 'sokspec', inputValue:'FSOK', 'id':'sokspec', checked: true} 
] 
    }); 

Pour obtenir la valeur radiobutton vérifiée J'utilise ceci:

var radiovalue= Ext.getCmp('sokspecs').items.get(0).getGroupValue() 
0

si vous utilisez MVC, vous essayez probablement d'ignorer l'utilisation ids. donc l'une de la solution alors pour obtenir la valeur dans l'événement de changement est

change : function(radioButton, newValue, oldValue, eOpts){ 
     console.log(newValue.individual); 
} 
Questions connexes