Ext RadioGroup - ¿Cómo acceder al valor del botón de radio seleccionado?
-
03-07-2019 - |
Pregunta
Tengo algunas dificultades para acceder al valor del botón de radio seleccionado en un grupo de radiología. He intentado una serie de enfoques diferentes basados ??en discusiones en otras publicaciones en el foro y en la web. Desafortunadamente, no he tenido la suerte (o habilidad) suficiente para que funcione. Basándome en la siguiente configuración de FormPanel, esperaba que alguien pudiera mostrarme cómo obtener el valor de la radio seleccionada en el grupo 'mainPhone'.
¡Gracias!
Quería actualizar para indicar que pude obtener una respuesta de stackoverflow mientras que los foros EXT-JS no me brindaron ninguna ayuda. ¡Es una forma de apilar flujos!
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
})
]}]});
}
Solución
Esto es una especie de suposición salvaje, pero ¿qué tal esto?
myForm2.getForm().getValues()['id-1'];
Otros consejos
El método getValue ()
en el grupo de radio en sí mismo devolverá el objeto que se verifica, si lo hay, de lo contrario, devuelve undefined.
(por la forma en que establezco un valor en lugar de inputValue para mis cuadros, aunque no creo que haga mucha diferencia, tal vez lo haga en el último " getValue "), estoy usando extjs 3.0, y La configuración de mi 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
Sé que esta pregunta es antigua, pero estoy agregando esto como referencia. El siguiente snipit es válido para Ext 2.2 afaik.
Ext.getCmp("mainPhone").items.get(0).getGroupValue();
La respuesta de Lo-Tan funciona para mí. También estoy usando extjs 2.2.1 Al igual que yo, es posible que no tenga un ext.Form.Formpanel, sino solo un cuadro de búsqueda y un radiogrupo. 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 del botón de radio verificado, uso esto:
var radiovalue= Ext.getCmp('sokspecs').items.get(0).getGroupValue()
si desea obtener el valor específico del campo, use
myForm2.getForm().findField('id-1').getGroupValue();
No estoy seguro de si esto es demasiado simple, pero pude acceder al valor (en Ext 3.3.1) usando la propiedad 'inputValue'.
var radio = ...;
var value = radio.inputValue;
si está utilizando MVC, probablemente intente ignorar el uso de ID. Entonces, una de las soluciones para obtener valor en el evento de cambio es
change : function(radioButton, newValue, oldValue, eOpts){
console.log(newValue.individual);
}
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;
}
}
}