123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
- <style type="text/css">
- .highlight { display: block; background-color: #ddd; }
- </style>
- <script type="text/javascript">
- function highlight() {
- document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
- }
- </script>
- </head>
- <body onload="prettyPrint(); highlight();">
- <pre class="prettyprint lang-js"><span id='Ext-form-field-Radio'>/**
- </span> * @docauthor Robert Dougan <rob@sencha.com>
- *
- * Single radio field. Similar to checkbox, but automatically handles making sure only one radio is checked
- * at a time within a group of radios with the same name.
- *
- * # Labeling
- *
- * In addition to the {@link Ext.form.Labelable standard field labeling options}, radio buttons
- * may be given an optional {@link #boxLabel} which will be displayed immediately to the right of the input. Also
- * see {@link Ext.form.RadioGroup} for a convenient method of grouping related radio buttons.
- *
- * # Values
- *
- * The main value of a Radio field is a boolean, indicating whether or not the radio is checked.
- *
- * The following values will check the radio:
- *
- * - `true`
- * - `'true'`
- * - `'1'`
- * - `'on'`
- *
- * Any other value will uncheck it.
- *
- * In addition to the main boolean value, you may also specify a separate {@link #inputValue}. This will be sent
- * as the parameter value when the form is {@link Ext.form.Basic#submit submitted}. You will want to set this
- * value if you have multiple radio buttons with the same {@link #name}, as is almost always the case.
- *
- * # Example usage
- *
- * @example
- * Ext.create('Ext.form.Panel', {
- * title : 'Order Form',
- * width : 300,
- * bodyPadding: 10,
- * renderTo : Ext.getBody(),
- * items: [
- * {
- * xtype : 'fieldcontainer',
- * fieldLabel : 'Size',
- * defaultType: 'radiofield',
- * defaults: {
- * flex: 1
- * },
- * layout: 'hbox',
- * items: [
- * {
- * boxLabel : 'M',
- * name : 'size',
- * inputValue: 'm',
- * id : 'radio1'
- * }, {
- * boxLabel : 'L',
- * name : 'size',
- * inputValue: 'l',
- * id : 'radio2'
- * }, {
- * boxLabel : 'XL',
- * name : 'size',
- * inputValue: 'xl',
- * id : 'radio3'
- * }
- * ]
- * },
- * {
- * xtype : 'fieldcontainer',
- * fieldLabel : 'Color',
- * defaultType: 'radiofield',
- * defaults: {
- * flex: 1
- * },
- * layout: 'hbox',
- * items: [
- * {
- * boxLabel : 'Blue',
- * name : 'color',
- * inputValue: 'blue',
- * id : 'radio4'
- * }, {
- * boxLabel : 'Grey',
- * name : 'color',
- * inputValue: 'grey',
- * id : 'radio5'
- * }, {
- * boxLabel : 'Black',
- * name : 'color',
- * inputValue: 'black',
- * id : 'radio6'
- * }
- * ]
- * }
- * ],
- * bbar: [
- * {
- * text: 'Smaller Size',
- * handler: function() {
- * var radio1 = Ext.getCmp('radio1'),
- * radio2 = Ext.getCmp('radio2'),
- * radio3 = Ext.getCmp('radio3');
- *
- * //if L is selected, change to M
- * if (radio2.getValue()) {
- * radio1.setValue(true);
- * return;
- * }
- *
- * //if XL is selected, change to L
- * if (radio3.getValue()) {
- * radio2.setValue(true);
- * return;
- * }
- *
- * //if nothing is set, set size to S
- * radio1.setValue(true);
- * }
- * },
- * {
- * text: 'Larger Size',
- * handler: function() {
- * var radio1 = Ext.getCmp('radio1'),
- * radio2 = Ext.getCmp('radio2'),
- * radio3 = Ext.getCmp('radio3');
- *
- * //if M is selected, change to L
- * if (radio1.getValue()) {
- * radio2.setValue(true);
- * return;
- * }
- *
- * //if L is selected, change to XL
- * if (radio2.getValue()) {
- * radio3.setValue(true);
- * return;
- * }
- *
- * //if nothing is set, set size to XL
- * radio3.setValue(true);
- * }
- * },
- * '-',
- * {
- * text: 'Select color',
- * menu: {
- * indent: false,
- * items: [
- * {
- * text: 'Blue',
- * handler: function() {
- * var radio = Ext.getCmp('radio4');
- * radio.setValue(true);
- * }
- * },
- * {
- * text: 'Grey',
- * handler: function() {
- * var radio = Ext.getCmp('radio5');
- * radio.setValue(true);
- * }
- * },
- * {
- * text: 'Black',
- * handler: function() {
- * var radio = Ext.getCmp('radio6');
- * radio.setValue(true);
- * }
- * }
- * ]
- * }
- * }
- * ]
- * });
- */
- Ext.define('Ext.form.field.Radio', {
- extend:'Ext.form.field.Checkbox',
- alias: ['widget.radiofield', 'widget.radio'],
- alternateClassName: 'Ext.form.Radio',
- requires: ['Ext.form.RadioManager'],
- <span id='Ext-form-field-Radio-property-isRadio'> /**
- </span> * @property {Boolean} isRadio
- * `true` in this class to identify an object as an instantiated Radio, or subclass thereof.
- */
- isRadio: true,
- <span id='Ext-form-field-Radio-cfg-uncheckedValue'> /**
- </span> * @cfg {String} uncheckedValue
- * @private
- */
- // private
- inputType: 'radio',
- ariaRole: 'radio',
-
- formId: null,
- <span id='Ext-form-field-Radio-method-getGroupValue'> /**
- </span> * If this radio is part of a group, it will return the selected value
- * @return {String}
- */
- getGroupValue: function() {
- var selected = this.getManager().getChecked(this.name, this.getFormId());
- return selected ? selected.inputValue : null;
- },
- <span id='Ext-form-field-Radio-method-onBoxClick'> /**
- </span> * @private Handle click on the radio button
- */
- onBoxClick: function(e) {
- var me = this;
- if (!me.disabled && !me.readOnly) {
- this.setValue(true);
- }
- },
-
- onRemoved: function(){
- this.callParent(arguments);
- this.formId = null;
- },
- <span id='Ext-form-field-Radio-method-setValue'> /**
- </span> * Sets either the checked/unchecked status of this Radio, or, if a string value is passed, checks a sibling Radio
- * of the same name whose value is the value specified.
- * @param {String/Boolean} value Checked value, or the value of the sibling radio button to check.
- * @return {Ext.form.field.Radio} this
- */
- setValue: function(v) {
- var me = this,
- active;
- if (Ext.isBoolean(v)) {
- me.callParent(arguments);
- } else {
- active = me.getManager().getWithValue(me.name, v, me.getFormId()).getAt(0);
- if (active) {
- active.setValue(true);
- }
- }
- return me;
- },
- <span id='Ext-form-field-Radio-method-getSubmitValue'> /**
- </span> * Returns the submit value for the checkbox which can be used when submitting forms.
- * @return {Boolean/Object} True if checked, null if not.
- */
- getSubmitValue: function() {
- return this.checked ? this.inputValue : null;
- },
- getModelData: function() {
- return this.getSubmitData();
- },
- // inherit docs
- onChange: function(newVal, oldVal) {
- var me = this,
- r, rLen, radio, radios;
- me.callParent(arguments);
- if (newVal) {
- radios = me.getManager().getByName(me.name, me.getFormId()).items;
- rLen = radios.length;
- for (r = 0; r < rLen; r++) {
- radio = radios[r];
- if (radio !== me) {
- radio.setValue(false);
- }
- }
- }
- },
- // inherit docs
- getManager: function() {
- return Ext.form.RadioManager;
- }
- });
- </pre>
- </body>
- </html>
|