Внешняя радиогруппа - Как получить доступ к значению выбранного переключателя?
-
03-07-2019 - |
Вопрос
У меня возникли некоторые трудности с доступом к значению выбранного переключателя в радиогруппе.Я попробовал несколько различных подходов, основанных на обсуждении в других сообщениях на форуме и по всему Интернету.К сожалению, мне не повезло (или я не был достаточно опытен), чтобы заставить это работать.Основываясь на следующей конфигурации FormPanel, я надеялся, что кто-нибудь сможет показать мне, как получить значение выбранного радио в группе "Главный телефон".
Спасибо!
Хотел обновить, чтобы указать, что я смог получить ответ от stackoverflow, в то время как форумы EXT-JS не предоставили мне никакой помощи.Так держать, stackoverflow!
Мэтт
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
})
]}]});
}
Решение
Это что-то вроде дикого предположения, но как насчет этого:
myForm2.getForm().getValues()['id-1'];
Другие советы
Метод getValue()
по радио сама группа вернет объект, который проверяется, если таковой имеется, в противном случае он возвращает undefined.
(кстати, я установил value вместо inputValue для своих блоков, хотя я не думаю, что это имеет большое значение, возможно, это имеет значение для последнего "GetValue"), я использую extjs 3.0, и моя конфигурация radiogroup немного отличается от вашей.
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
Я знаю, что этот вопрос устарел, но я добавляю это для справки.Следующий снипит действителен для Ext 2.2 afaik.
Ext.getCmp("mainPhone").items.get(0).getGroupValue();
Ответ от Ло-Тана меня устраивает.Я также использую extjs 2.2.1 У вас, как и у меня, может не быть ext.Form.Formpanel, а только поле поиска и радиогруппа.Я использую этот код, чтобы получить значение из радиогруппы.
Моя радиогруппа:
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}
]
});
Чтобы получить проверенное значение radiobutton, я использую это:
var radiovalue= Ext.getCmp('sokspecs').items.get(0).getGroupValue()
если вы хотите получить конкретное значение поля, используйте
myForm2.getForm().findField('id-1').getGroupValue();
Не уверен, что это слишком просто, но я смог получить доступ к значению (в Ext 3.3.1), используя свойство 'inputValue'.
var radio = ...;
var value = radio.inputValue;
если вы используете MVC, вероятно, вы пытаетесь игнорировать использование идентификаторов.итак, одним из решений для получения значения в событии изменения является
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;
}
}
}