Radio.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:2k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.0.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. /**
  8.  * @class Ext.form.Radio
  9.  * @extends Ext.form.Checkbox
  10.  * Single radio field.  Same as Checkbox, but provided as a convenience for automatically setting the input type.
  11.  * Radio grouping is handled automatically by the browser if you give each radio in a group the same name.
  12.  * @constructor
  13.  * Creates a new Radio
  14.  * @param {Object} config Configuration options
  15.  * @xtype radio
  16.  */
  17. Ext.form.Radio = Ext.extend(Ext.form.Checkbox, {
  18.     inputType: 'radio',
  19.     /**
  20.      * Overridden and disabled. The editor element does not support standard valid/invalid marking. @hide
  21.      * @method
  22.      */
  23.     markInvalid : Ext.emptyFn,
  24.     /**
  25.      * Overridden and disabled. The editor element does not support standard valid/invalid marking. @hide
  26.      * @method
  27.      */
  28.     clearInvalid : Ext.emptyFn,
  29.     /**
  30.      * If this radio is part of a group, it will return the selected value
  31.      * @return {String}
  32.      */
  33.     getGroupValue : function(){
  34.      var p = this.el.up('form') || Ext.getBody();
  35.         var c = p.child('input[name='+this.el.dom.name+']:checked', true);
  36.         return c ? c.value : null;
  37.     },
  38.     // private
  39.     onClick : function(){
  40.      if(this.el.dom.checked != this.checked){
  41. var els = this.getCheckEl().select('input[name=' + this.el.dom.name + ']');
  42. els.each(function(el){
  43. if(el.dom.id == this.id){
  44. this.setValue(true);
  45. }else{
  46. Ext.getCmp(el.dom.id).setValue(false);
  47. }
  48. }, this);
  49. }
  50.     },
  51.     /**
  52.      * Sets either the checked/unchecked status of this Radio, or, if a string value
  53.      * is passed, checks a sibling Radio of the same name whose value is the value specified.
  54.      * @param value {String/Boolean} Checked value, or the value of the sibling radio button to check.
  55.      * @return {Ext.form.Field} this
  56.      */
  57.     setValue : function(v){
  58.      if (typeof v == 'boolean') {
  59.             Ext.form.Radio.superclass.setValue.call(this, v);
  60.         } else {
  61.             var r = this.getCheckEl().child('input[name=' + this.el.dom.name + '][value=' + v + ']', true);
  62.             if(r){
  63.                 Ext.getCmp(r.id).setValue(true);
  64.             }
  65.         }
  66.         return this;
  67.     },
  68.     
  69.     // private
  70.     getCheckEl: function(){
  71.         if(this.inGroup){
  72.             return this.el.up('.x-form-radio-group')
  73.         }
  74.         return this.el.up('form') || Ext.getBody();
  75.     }
  76. });
  77. Ext.reg('radio', Ext.form.Radio);