2009-01-05 12 views
7

Ich habe Schwierigkeiten beim Zugriff auf den Wert des ausgewählten Optionsfelds in einer Radiogruppe. Ich habe eine Reihe verschiedener Ansätze versucht, die auf Diskussionen in anderen Posts im Forum und im Internet basieren. Leider hatte ich nicht genug (oder geschicktes) genug, um es zum Laufen zu bringen. Basierend auf der folgenden FormPanel-Konfiguration hoffte ich, dass mir jemand zeigen könnte, wie man den Wert des ausgewählten Radios in der Gruppe "mainPhone" bekommt.Ext RadioGroup - Zugriff auf den Wert des ausgewählten Optionsfelds?

Danke!

Wollte aktualisieren, um anzuzeigen, dass ich eine Antwort von Stackoverflow erhalten konnte, während die EXT-JS-Foren mir keine Hilfe zur Verfügung stellten. Weg zum 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 
       }) 
    ]}]});    
} 

Antwort

9

Das ist etwas von einer wilden Vermutung ist, aber wie wäre es damit:

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

Dies tat es! Danke vielmals – 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

Verfahren getValue() auf der Radio-Gruppe selbst wird das Objekt zurück, das ist überprüft, falls vorhanden, andernfalls kehrt es undefiniert zurück.

(nebenbei setze ich Wert anstelle von inputValue für meine Boxen, obwohl ich denke nicht, dass es einen großen Unterschied macht, vielleicht tut es auf dem letzten "getValue"), ich benutze extjs 3.0 und Meine Funkgruppenkonfiguration ist etwas anders als Ihre.

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

, wenn Sie den spezifischen Wert des Feldes erhalten möchten, verwenden

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

Ich weiß, diese Frage ist alt, aber ich bin, diese Referenz. Der folgende Snipit gilt für Ext 2.2 afaik.

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

nicht sicher, ob dies zu einfach ist, aber ich war in der Lage, den Wert zuzugreifen (in Ext 3.3.1) die ‚Inputvalue‘ Eigenschaft.

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

Die Antwort von Lo-Tan funktioniert für mich. Ich benutze auch extjs 2.2.1 Wie ich Sie möglicherweise nicht ein ext.Form.Formpanel, sondern nur ein Suchfeld und eine Radiogruppe. Ich verwende diesen Code, um den Wert von der Radiogruppe zu erhalten.

Meine Radiogruppe:

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

Um die geprüft RadioButton- Wert erhalte ich diese verwenden:

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

wenn Sie MVC verwenden, haben Sie wahrscheinlich versuchen, mit ids zu ignorieren. so eine der Lösung, dann Wert in Change-Ereignis zu erhalten ist

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