国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

15.5.如何去驗證多個Combo Box及Radio Button組件

2024-04-27 13:52:20
字體:
來源:轉載
供稿:網友
15.5.1 問題
如何去為多個radio button 及combo box 組件加入驗證功能, 以確保最少其中一個項目會被選取?
15.5.2 解決辦法
可以使用NumberValidator 去檢查radio button 組件, 再使用一個自定義的Validator 去驗證combo box 組件。
15.5.3 討論
如果要從radio button 組件群中返回一個ValidationResultEvent 事件, 我們可以使用NumberValidator 去檢查RadioButtonGroup 的selectedIndex 屬性是否為”-1”。如果為”-1”的話,即代表radio button 中沒有任何一項被選取了。而對于combo box 組件, 則可以創建一個自定義的validator, 用來檢查ComboBox 的selectedItem 屬性是否也空, 而被選取的項目又是否有效。
以下有關ComboBox 中自定義的validator 的代碼會比較容易理解, 并且已加入注釋:
代碼如下:
+展開
-ActionScript
package oreilly.cookbook
{
import mx.validators.ValidationResult;
import mx.validators.Validator;
public class ComboValidator extends Validator
{
// 如果ComboBox中沒有項目被選中, 則返回這個錯誤信息
public var error:String;
//如果開發者把一個自定義的項目推進ComboBox的數組中(這種情況我見過不少)
//我們就會把這個項跟已選取的項進行對比。
public var prompt:String;
public function ComboValidator() {
super();
}
//在這里我們進行兩個檢查:
//1. comboBox中有沒有項目被選中
//2. 開發者有沒有為comboBox加入自定義的項目
//任何一個條件為ture的話, 則返回一個錯誤
override protected function doValidation(value:Object):Array
{
var results:Array = [];
if(value as String == prompt || value == null) {
var res:ValidationResult = new ValidationResult(true"""", error);
results.push(res);
}
return results;
}
}
}

還有一種更方便地進行復數驗證的方法, 那就是使用數組。首先, 我們要把所有需要組件中的validator 都加入到一個數組中, 然后使用public static Validator.validateAll 去存取數組中的所有validator。這種方法對于需要進行復數屬性的驗證時是十分有用的。假如任何一個validator 返回錯誤, 這些錯誤會被收集并在Alert 控件中顯示出來:
代碼如下
+展開
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="600height="400xmlns:cookbook="oreilly.cookbook.*creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.events.ValidationResultEvent;
import mx.validators.Validator;
import mx.controls.Alert;
[Bindable]
private var validatorArr:Array;
//建立一個包含所有validator的數組, 我們將會以一個方法對其進行檢查
private function init():void {
validatorArr = new Array();
//push all the validators into the same array
validatorArr.push(rbgValidator);
validatorArr.push(toggleValidator);
validatorArr.push(comboValidator);
}
//對所有validator數組中的項目進行驗證。如果有任何錯誤的話, 則會發出一個警告。
private function validateForm():void {
// the validate all method will validate all the
Validators in an array
//passed to the validateAll method
var validatorErrorArray:Array =
Validator.validateAll(validatorArr);;
var isValidForm:Boolean = validatorErrorArray.length == 0;
if (!isValidForm) {
var err:ValidationResultEvent;
var errorMessageArray:Array = [];
for each (err in validatorErrorArray) {
errorMessageArray.push(err.message);
}
Alert.show(errorMessageArray.join("/n"),"Invalid form...", Alert.OK);
}
}

]]>
</mx:Script>
<mx:StringValidator id="rbgValidatorsource="{rbg}"
property="selectedValue"/>

<mx:NumberValidator id="toggleValidatorsource="{toggleButton}"
property="selectedIndexallowNegative="false"
negativeError="Please select a Radio Button"/>

<cookbook:ComboValidator id="comboValidatorerror="Please
Select A State
prompt="{stateCB.prompt}"
source="{stateCB}property="selectedItem"/>

<mx:Form id="form">
<mx:FormItem>
<mx:ComboBox id="stateCBdataProvider="{someDataProvider}"
prompt="Select AState"/>

</mx:FormItem>
<mx:FormItem>
<mx:RadioButtonGroup id="rbg"/>
<mx:RadioButton group="{rbg}label="firstid="first"/>
<mx:RadioButton group="{rbg}id="secondlabel="second"/>
<mx:RadioButton id="thirdlabel="thirdgroup="{rbg}"/>
</mx:FormItem>
<mx:FormItem>
<mx:ToggleButtonBar id="toggleButton">
<mx:dataProvider>
<mx:Array>
<mx:String> First Option </mx:String>
<mx:String> Second Option </mx:String>
<mx:String> Third Option </mx:String>
<mx:String> Fourth Option </mx:String>
<mx:String> Fifth Option </mx:String>
</mx:Array>
</mx:dataProvider>
</mx:ToggleButtonBar>
</mx:FormItem>
</mx:Form>
<mx:Button label="validateclick="validateForm()"/>
</mx:VBox>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临海市| 桐城市| 西平县| 宜川县| 称多县| 城固县| 钦州市| 恭城| 中牟县| 米脂县| 喀喇| 延边| 巨野县| 庐江县| 绥滨县| 皋兰县| 黄大仙区| 寿宁县| 昔阳县| 龙川县| 玉环县| 汤阴县| 杂多县| 鄂尔多斯市| 临江市| 吉首市| 庄浪县| 贵德县| 石屏县| 临桂县| 上饶市| 宜州市| 固始县| 盐山县| 英吉沙县| 鄯善县| 霍山县| 安福县| 合江县| 元阳县| 固镇县|