2009-01-05 24 views
7

Tengo algunas dificultades para acceder al valor del botón de opción seleccionado en un grupo de radio. Intenté una serie de enfoques diferentes basados ​​en la discusión en otras publicaciones en el foro y en la web. Lamentablemente no hemos tenido la suerte (o la destreza) de hacerlo funcionar. Basado en la siguiente configuración de FormPanel, esperaba que alguien me mostrara cómo obtener el valor de la radio seleccionada en el grupo 'mainPhone'.Ext RadioGroup - ¿Cómo acceder al valor del botón de opción seleccionado?

Gracias!

Quería actualizar para indicar que pude obtener una respuesta de stackoverflow mientras que los foros de EXT-JS no me proporcionaron ninguna ayuda. ¡Así se hace 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 
       }) 
    ]}]});    
} 

Respuesta

9

Esto es algo de una suposición, pero ¿qué tal esto:

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

¡Éste lo hizo! Muchas gracias – 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

El método getValue() en el propio grupo de radio devolverá el objeto que es marcado, si hay alguno, de lo contrario, devuelve indefinido.

(por cierto, establecí el valor en lugar de inputValue para mis cuadros, aunque no creo que marque una gran diferencia, tal vez lo haga en el último "getValue"), estoy usando extjs 3.0, y mi configuración de grupo de radio es ligeramente diferente a la tuya.

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 desea obtener el valor específico del campo, utilice

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

Sé que esta pregunta es viejo, pero estoy añadiendo esto por referencia. El siguiente snipit es válido para Ext 2.2 afaik.

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

No estoy seguro si esto es demasiado simple, pero yo era capaz de acceder al valor (en Ext 3.3.1) mediante la propiedad 'inputValue'.

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

La respuesta de Lo-Tan funciona para mí. También estoy usando extjs 2.2.1 Como yo, es posible que no tenga un ext.Form.Forpanel sino solo un cuadro de búsqueda y un grupo de radio. Uso este código para obtener el valor del grupo de radio.

Mi grupo de 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} 
] 
    }); 

para obtener el valor comprobado botón de radio utilizo este:

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

si está utilizando MVC, probablemente se trate de ignorar el uso de identificadores. entonces uno de la solución para obtener valor en el evento de cambio es

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