Ticket #6456: CheckedMultiSelect_radio-6456-2008-04-08_1345.diff
| File CheckedMultiSelect_radio-6456-2008-04-08_1345.diff, 6.7 kB (added by nathan, 9 months ago) |
|---|
-
dojox/form/_FormSelectWidget.js
3 3 dojo.require("dijit.form._FormWidget"); 4 4 5 5 dojo.declare("dojox.form._FormSelectWidget", dijit.form._FormWidget, { 6 // multiple: Boolean 7 // Matches the select's "multiple=" value 8 multiple: "", 9 6 10 // _multiValue: Boolean 7 11 // Whether or not we are multi-valued (for form) 8 12 _multiValue: false, … … 140 144 _updateSelection: function(){ 141 145 // summary: 142 146 // Sets the "selected" class on the item for styling purposes 147 this.value = this._getValueFromOpts(); 143 148 var val = this.value; 144 149 if(!dojo.isArray(val)){ 145 150 val = [val]; … … 151 156 }) ? "addClass" : "removeClass"](child.domNode, this.baseClass + "SelectedOption"); 152 157 }, this); 153 158 } 154 this.value = this._getValueFromOpts();155 159 this._handleOnChange(this.value); 156 160 }, 157 161 … … 164 168 if(opt && opt.value){ 165 169 return opt.value 166 170 }else{ 171 this.options[0].selected = true; 167 172 return this.options[0].value; 168 173 } 169 174 }else if(this._multiValue){ … … 177 182 return ""; 178 183 }, 179 184 185 postMixInProperties: function(){ 186 this._multiValue = (this.multiple.toLowerCase() === "true"); 187 this.inherited(arguments); 188 }, 189 180 190 _fillContent: function(){ 181 191 // summary: 182 192 // Loads our options and sets up our dropdown correctly. We -
dojox/form/tests/test_CheckedMultiSelect.html
63 63 dojo.connect(ms1, "onChange", function(val){ 64 64 console.log("First Select Changed to " + val); 65 65 }); 66 dojo.connect(ss1, "onChange", function(val){ 67 console.log("First Radio Select Changed to " + val); 68 }); 66 69 }); 67 70 </script> 68 71 <style> … … 77 80 </head> 78 81 <body class="tundra"> 79 82 <h1 class="testTitle">Test: dojox.form.CheckedMultiSelect</h1> 80 <h2>Automated test</h2>81 83 <form dojoType="dijit.form.Form" jsId="form"> 84 <h2>Check Boxes</h2> 82 85 <select jsId="ms1" multiple="true" name="ms1" dojoType="dojox.form.CheckedMultiSelect"> 83 86 <option value="TN">Tennessee</option> 84 87 <option value="VA" selected="selected">Virginia</option> … … 86 89 <option value="FL">Florida</option> 87 90 <option value="CA">California</option> 88 91 </select> 89 <hr>90 92 <select jsId="ms2" multiple="true" name="ms2" dojoType="dojox.form.CheckedMultiSelect"> 91 93 <option value="UT">Utah</option> 92 94 <option value="TX" selected="selected">Texas</option> … … 96 98 <option value="OR">Oregon</option> 97 99 <option value="PA">Pennsylvania</option> 98 100 </select> 99 <hr>100 101 <select jsId="ms3" multiple="true" name="ms3" dojoType="dojox.form.CheckedMultiSelect"> 101 102 </select> 102 103 <hr> 104 <h2>Radio Buttons</h2> 105 <select jsId="ss1" name="ss1" dojoType="dojox.form.CheckedMultiSelect"> 106 <option value="TN">Tennessee</option> 107 <option value="VA" selected="selected">Virginia</option> 108 <option value="WA">Washington</option> 109 <option value="FL">Florida</option> 110 <option value="CA">California</option> 111 </select> 112 <select jsId="ss2" name="ss2" value="TX" dojoType="dojox.form.CheckedMultiSelect"> 113 <option value="UT">Utah</option> 114 <option value="TX">Texas</option> 115 <option value="GA">Georgia</option> 116 <option value="ID">Idaho</option> 117 <option value="WY">Wyoming</option> 118 <option value="OR">Oregon</option> 119 <option value="PA">Pennsylvania</option> 120 </select> 121 <select jsId="ss3" name="ss3" dojoType="dojox.form.CheckedMultiSelect"> 122 </select> 123 <hr> 103 124 <button dojoType="dijit.form.Button"> 104 125 <script type="dojo/method" event="onClick"> 105 126 console.dir(form.getValues()); … … 111 132 numOptions++; 112 133 ms3.addOption(numOptions + "", "Option " + (numOptions)); 113 134 </script> 114 Add Option135 Add Check Option 115 136 </button> 116 137 <button dojoType="dijit.form.Button"> 117 138 <script type="dojo/method" event="onClick"> 139 numOptions++; 140 ss3.addOption(numOptions + "", "Option " + (numOptions)); 141 </script> 142 Add Radio Option 143 </button> 144 <button dojoType="dijit.form.Button"> 145 <script type="dojo/method" event="onClick"> 118 146 ms3.setAttribute("disabled", !ms3.disabled); 119 147 </script> 120 148 Toggle Disabled -
dojox/form/resources/_CheckedMultiSelectItem.html
1 1 <div class="dijitReset ${baseClass}" 2 ><input class="${baseClass}Box" dojoType="dijit.form.CheckBox" dojoAttachPoint="checkBox" dojoAttachEvent="_onClick:_changeBox" type="checkbox" 2 ><input class="${baseClass}Box" dojoType="dijit.form.CheckBox" dojoAttachPoint="checkBox" 3 dojoAttachEvent="_onClick:_changeBox" type="${_type.type}" baseClass="${_type.baseClass}" 3 4 ><div class="dijitInline ${baseClass}Label" dojoAttachPoint="labelNode" dojoAttachEvent="onmousedown:_onMouse,onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick"></div 4 5 ></div> -
dojox/form/CheckedMultiSelect.js
23 23 // Whether or not this widget is disabled 24 24 disabled: false, 25 25 26 postMixInProperties: function(){ 27 // summary: 28 // Set the appropriate _subClass value - based on if we are multi- 29 // or single-select 30 if(this.parent._multiValue){ 31 this._type = {type: "checkbox", baseClass: "dijitCheckBox"}; 32 }else{ 33 this._type = {type: "radio", baseClass: "dijitRadio"}; 34 } 35 this.inherited(arguments); 36 }, 37 26 38 postCreate: function(){ 27 39 // summary: 28 40 // Set innerHTML here - since the template gets messed up sometimes … … 34 46 _changeBox: function(){ 35 47 // summary: 36 48 // Called to force the select to match the state of the check box 37 // (only on click of the checkbox) 38 this.option.selected = this.checkBox.getValue() && true; 39 49 // (only on click of the checkbox) Radio-based calls setValue 50 // instead. 51 if(this.parent._multiValue){ 52 this.option.selected = this.checkBox.getValue() && true; 53 }else{ 54 this.parent.setValue(this.option.value); 55 } 40 56 // fire the parent's change 41 57 this.parent._updateSelection(); 42 58 … … 86 102 87 103 baseClass: "dojoxMultiSelect", 88 104 89 _multiValue: true, // for Form90 91 105 _mouseDown: function(e){ 92 106 // summary: 93 107 // Cancels the mousedown event to prevent others from stealing