Flex多功能输入验证控件ValidInput(仿CheckForm.js),抛弃Flex Validator另辟蹊径.
package com.ux.utils
{
import com.ux.components.FileInput
import com.ux.components.ValidInput;
import com.ux.autocomplete.AutoComplete;
import mx.core.Container;
public class ValidateUtil
{
public function ValidateUtil()
{
}
public static function isValid(container:Container):Boolean
{
var ISVALID:Boolean=true;
ISVALID=ISVALID && recursive(container.getChildren());
return ISVALID;
}
/**
* 遍历验证控件
* @return Boolean
* */
protected static function recursive(targets:Array):Boolean
{
var VALID:Boolean=true;
if (0 < targets.length)
{
for each (var o in targets)
{
if (o is Container && !(o is ValidInput) && !(o is AutoComplete) && !(o is FileInput))
{
VALID=VALID && recursive(o.getChildren());
}
else
{
if (o is ValidInput)
{
if (!(o as ValidInput).doValidate())
{
VALID=false;
ValidInput(o).setFocus();
break;
}
}
if (o is AutoComplete)
{
if (!(o as AutoComplete).doValidate())
{
VALID=false;
break;
}
}
if(o is FileInput){
if(!(o as FileInput).doValidate()){
VALID = false;
break;
}
}
}
}
}
return VALID;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Metadata>
[IconFile("com/ux/components/assets/icon.png")]
</mx:Metadata>
<mx:Style>
.errorTip{
fontSize:12;
}
</mx:Style>
<mx:Script>
<![CDATA[
[Bindable]
private var _displayAsPassword:Boolean=false;
[Bindable]
private var _editable:Boolean=true;
private var _format:String=null;
[Inspectable(type="Boolean",defaultValue="false",enumeration="true,false")]
public function set displayAsPassword(displayAsPassword:Boolean):void
{
_displayAsPassword=displayAsPassword;
}
[Inspectable(type="Boolean",defaultValue="true",enumeration="true,false")]
public function set editable(editable:Boolean):void
{
_editable=editable;
}
public function set format(format:String):void
{
_format=format;
}
public function doValidate():Boolean
{
if (null != _format)
{
var value:String=Text();
var postion:int=_format.lastIndexOf("~");
var errorInfo:String=_format.substring(0, postion);
var format:String=_format.substring(postion + 1, _format.length);
//判断不能为空
var notNull:Boolean=false;
if (format.charAt(format.length - 1) == "!")
{
notNull=true;
format=format.substring(0, format.length - 1);
}
if (notNull)
{
if ("" == value)
{
validInput.errorString=errorInfo + ",内容不能为空!";
return false;
}
else
{
validInput.errorString="";
}
}
//判断不能为空
//内容的长度判断
var colonP:int=format.indexOf(":");
if (colonP > 0)
{
if (format.charAt(colonP - 1) == 'f')
{
var lengthLimit:String=format.substring(0, colonP - 1);
var lNaN:int=parseInt(lengthLimit);
if (!isNaN(lNaN))
{
var len:Number=getRealLength(value);
if (len != lNaN)
{
validInput.errorString=errorInfo + "," + "长度为(" + len + ")位,必须为(" + lengthLimit + ")位!";
return false;
}
else
{
validInput.errorString="";
}
}
}
else
{
var limitStr:String=format.substring(0, colonP);
var limitNaN:int=parseInt(limitStr);
if (!isNaN(limitNaN))
{
var lenth:Number=getRealLength(value);
if (lenth > limitNaN)
{
validInput.errorString=errorInfo + "," + "长度(" + lenth + ")超过限制(" + limitNaN + ")位!";
return false;
}
else
{
validInput.errorString="";
}
}
}
}
format=format.substring(colonP+1, format.length);
//判断类型
switch (format)
{
case "email": //判断Email
if (null == value.match(/\w+@.+\..+/))
{
validInput.errorString=errorInfo + "\n" + "格式不正确:\"" + value + "\"不是一个Email地址";
return false;
}
else
{
validInput.errorString="";
}
break;
case "int": //判断Int
var intVal:*=parseInt(value);
if (isNaN(intVal) || intVal != value)
{
validInput.errorString=errorInfo + "\n" + "格式不正确:" + value + "不是一个整数。";
return false;
}
else
{
validInput.errorString="";
}
break;
case "float": //判断float
if(null == value.match(/^(-?\d+)(\.\d+)?$/))
{
validInput.errorString=errorInfo + "\n" + "格式不正确:" + value + "不是一个浮点数。";
return false;
}
else
{
validInput.errorString="";
}
break;
case "card":
if (null == value.match(/^\d{15}|\d{18}$/))
{
validInput.errorString=errorInfo + "\n" + "格式不正确:" + value + "不是一个有效身份证号。";
return false;
}
else
{
validInput.errorString="";
}
break;
case "phone":
if(null == value.match(/^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/)){
validInput.errorString=errorInfo + "\n" + "格式不正确!";
return false;
}else{
validInput.errorString="";
}
break;
case "login":
if(null == value.match(/^[a-zA-Z]\w{5,17}$/)){
validInput.errorString=errorInfo + "\n" + "格式不正确!";
return false;
}else{
validInput.errorString="";
}
break;
case "url":
if(null == value.match(/^http:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?$|^[a-zA-z]+:\/\/(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$/)){
validInput.errorString=errorInfo + "\n" + "格式不正确!";
return false;
}else{
validInput.errorString="";
}
break;
default:
trace("FORMAT_STR: " + format + " , FORMAT String undefined!");
}
}
return true;
}
/**
*获取字符串真实长度
* @return number
* */
private function getRealLength(val:String):Number
{
var len:Number=0;
for (var i:int=0; i < val.length; i++)
{
if (val.charCodeAt(i) > 255)
len+=2;
else
len++;
}
return len;
}
/**
* 去除字符串两端的空格
* @return String
* */
private function trim(s:String):String{
s=s.replace(/^ */,"");
s=s.replace(/ *$/,"");
return s;
}
/**
* 获取控件值
* @return text:String
* */
public function Text():String
{
return validInput.text;
}
]]>
</mx:Script>
<mx:TextInput width="100%"
height="100%"
id="validInput"
displayAsPassword="{_displayAsPassword}"
editable="{_editable}"
focusOut="doValidate();"/>
</mx:HBox>
分享到:
相关推荐
《CheckForm.js:深入解析JavaScript表单验证》 在网页开发中,表单验证是必不可少的一环,它确保用户输入的数据符合预设的规则,从而提高用户体验并减轻服务器端的压力。CheckForm.js 是一个专门用于JavaScript...
Dreamweaver CHECKFORM.MXP 插件
checkform.js对一般的表单验证进行了封装,方便实用
"js 验证页面 checkform"是一个常见的实践,它涉及到在用户提交表单前通过JS执行的一系列验证规则,确保输入的数据符合预期格式和条件。以下将详细讲解这个话题。 **1. 表单验证的重要性** 在Web应用中,表单是用户...
本资源"checkForm_表单验证_javascript_"专注于使用纯JavaScript实现这一功能,对于JavaScript初学者来说是一个很好的实践项目。 JavaScript是一种广泛使用的客户端脚本语言,它在浏览器环境中运行,可以动态地更新...
本文将详细介绍一个基于纯JavaScript实现的弹出框验证表单——Check.js,以及如何利用它进行有效的用户输入验证。 Check.js是一个轻量级的JavaScript库,专注于提供美观且功能丰富的表单验证解决方案。由于它不依赖...
本资源提供的"完美表单验证js"就是一个全面的JavaScript解决方案,几乎涵盖了所有常见的表单验证需求,如电话、QQ、Email等。 JavaScript是一种客户端脚本语言,它可以直接在用户的浏览器上运行,无需服务器参与,...
jQuery CheckForm是一个非常实用的jQuery插件,它简化了前端表单验证的流程,使得开发者能够快速有效地实现各种验证规则。本文将围绕“jQuery CheckForm很经典的例子”进行深入讲解,通过实际案例分析,探讨其核心...
这个框架的核心是`CheckForm.js`文件,这通常是一个包含了各种验证规则和函数的JavaScript库。开发者可以通过调用这些预定义的方法来检查用户输入的数据是否符合预期的格式和条件。例如,验证邮箱是否有效,电话号码...
本文将详细介绍一个名为"CheckForm"的压缩包文件,它包含了一个程序,能帮助用户实现无人值守的电脑自动重启,并且允许用户设定多个特定时间进行重启,同时具备写入注册表以实现开机自启动的功能。 1. **自动重启...
`jquery-checkform` 提供了一种简单易用的方式来实现这一功能,使得开发者无需编写大量的 JavaScript 代码就能实现复杂的表单验证逻辑。 该插件的核心功能包括: 1. **实时验证**:`jquery-checkform` 可以实现...
JavaScript(简称JS)是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发,实现客户端的交互功能。在Web开发中,JavaScript验证是必不可少的一环,它可以帮助我们在用户提交数据前验证输入的有效性,避免...
"CheckForm-for.NET" 是一个专门针对.NET框架设计的表单验证工具,它为开发者提供了一种高效且灵活的方式来确保用户输入的数据满足应用程序所需的格式和规则。在.NET开发环境中,表单验证是不可或缺的一部分,因为它...
而在使用 Vue.js 搭配 Element UI 进行开发时,我们经常会遇到需要对多个表单进行同时验证的需求。本文将详细介绍如何通过 Promise 的方法实现 Vue Element UI 中的多表单验证。 #### 一、Vue Element UI 表单验证...
根据给定文件的信息,我们可以总结出一系列关于JavaScript(JS)中的表单验证方法与技巧。以下将详细解析各个部分,并提供具体的实现方案。 ### 1. 只允许输入数字 在给定的内容中,`onlyNum` 函数通过判断键盘...
`checkForm`是一个轻量级的JavaScript验证框架,它的主要目标是帮助开发者轻松地实现网页表单的数据验证。在Web开发中,表单验证是非常重要的一环,它确保用户输入的数据符合预设的规则,从而保护服务器免受不正确或...
在提供的文件内容中,我们可以看到两个具体的JavaScript验证代码示例,它们分别是针对输入长度验证和两次输入密码一致性的验证。 1. 长度验证: ```html function test(){ if(document.a.b.value.length > 50){ ...
4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字 5:只能输入英文字符和数字 6: js email验证 、js 判断email 、信箱/邮箱格式验证 7:js字符过滤,屏蔽关键字 8:js密码验证、判断密码 ...
根据提供的文件信息,我们可以总结出一系列与JavaScript验证相关的知识点,主要涵盖了常见的表单验证方法、字符限制、格式检查等实用技巧。以下是对这些知识点的详细解释: ### 1. 验证是否选择了单选按钮 在提供...