您的位置:首页 > 其它

采用弹出气泡方式进行客户端输入验证

2009-07-06 17:43 423 查看
在web页面中进行js验证,是一件非常麻烦的事儿,要重复写很多代码。

采用扩展属性+js遍历模式,可以减少重复代码的编写,提高开发效率:

<asp:TextBox Msg="Decimal类型" DataField="InvestigateMan" IsNull="false" FieldType="decimal"

precision="6,2" ID="InvestigateManTextBox" runat="server" CssClass="t_common"></asp:TextBox>

<span name="ValueData" style="color: Red;">*</span>

扩展属性:Msg, DataField, IsNull, FieldType

遍历脚本:

/*

*/

var isShowTip = false; //是否已经显示了Tip

var isShowCustomTip = true; //是否显示自定义验证的Tip

var msgValue = "";

var retValueKind = false;

var RegexMark = "##";

//常量

var MaxLength = "maxLength";

var TextLength = "TextLength";

var isIE = false;

//alert(document.all);

if (document.all != undefined)

{

isIE = true;

}

/*

=========================================================

用于对当前页面控件输入值的验证

=========================================================

*/

function CheckPage()

{

fctrl = null; //聚焦控件 默认置空

isShowTip = false;

retValueKind = true;

var ctrls = document.getElementsByTagName('form')[0]; //ctrls是数组类型,数组大小只计算form类型(button,text,textarea,checkbox,select等)

CreateDiv(); //ErrorDiv

//kb begin

for (var m = 0; m < ctrls.length; m++)

{

var __ctrl = ctrls[m];

var ctrlId = __ctrl.id;

AddBorder(ctrlId);

} //kb end

for (var n = 0; n < ctrls.length; n++)

{

var kind = true;

var __ctrl = ctrls
;

if (__ctrl.tagName.toLowerCase() == "input")

{

kind = ValidateTextBox(__ctrl); //kind标示验证是否通过false表示未通过,true表示通过

}

else if (__ctrl.tagName.toLowerCase() == "textarea")

{

kind = ValidataTextArea(__ctrl)

}

else if

(__ctrl.tagName.toLowerCase() == "select")

{

kind = ValidataDropList(__ctrl);

}

if (kind == false)

{

retValueKind = false; //retValueKind(即returnValueKind)标示验证是否通过,true表示通过,false表示未通过

}

ForEachCtrol(ctrls
);

}

//判断自定义判断方法是否存在

if (typeof (CustomValid) == "function")

{

isShowCustomTip = true;

if (CustomValid() == false)

{

retValueKind = false; //retValueKind(即returnValueKind)标示验证是否通过,true表示通过,false表示未通过

}

}

return retValueKind;

}

function ForEachCtrol(ctrls)

{

if (ctrls.length <= 0) return;

else

{

for (var n = 0; n < ctrls.length; n++)

{

var kind = true;

var __ctrl = ctrls
;

if (__ctrl.tagName.toLowerCase() == "input")

{

kind = ValidateTextBox(__ctrl);

}

else if (__ctrl.tagName.toLowerCase() == "textarea")

{

kind = ValidataTextArea(__ctrl)

}

else if (__ctrl.tagName.toLowerCase() == "select")

{

kind = ValidataDropList(__ctrl);

}

if (kind == false)

{

retValueKind = false; //retValueKind是全局变量

}

ForEachCtrol(ctrls
);

}

}

}

/*

===================================================

验证TEXTBOX

===================================================

*/

function ValidateTextBox(ctrl)

{

var returnValues = true;

var kind = true;

var ctrlId = ctrl.id;

if (ctrl.type == "text" || ctrl.type == "password")

{

if (ctrl.disabled == true)

{//disabled表示失效的文本框(域) ???????????????

return true;

}

v = StrTrim(ctrl.value);

if (v == "")

{

ctrl.value = "";

}

kind = Validata(ctrl, v); //kind标示验证是否通过

if (kind == false)

{

ctrl.onfocus = function()

{

_onfocus(ctrl);

}

ctrl.onblur = function()

{

_onblur(ctrl);

}

ShowElementBorder(ctrlId);

//ctrl.className = "input-error";

returnValues = false;

}

else

{

HideElementBorder(ctrlId);

//ctrl.className = "";

}

}

return returnValues; //返回验证是否通过,True标示通过,False标示未通过

}

/*

===================================================

验证大文本框的长度

===================================================

*/

function ValidataTextArea(ctrl)

{

var returnValues = true;

var txtlen = 0;

var kind = true;

if (ctrl.attributes["textlength"] != null)//文本长度

{

txtlen = ctrl.attributes["textlength"].value;

}

else if (ctrl.attributes["TextLength"] != null)//文本长度

{

txtlen = ctrl.attributes["TextLength"].value;

}

var Msg = "";

if (ctrl.attributes["msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["msg"].value;

}

else if (ctrl.attributes["Msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["Msg"].value;

}

var v = StrTrim(ctrl.value);

kind = Validata(ctrl, v); //kind标示验证是否通过

if (kind == false)

{

ctrl.onfocus = function()

{

_onfocus(ctrl);

}

ctrl.onblur = function()

{

_onblur(ctrl);

}

var ctrlId = ctrl.id;

ShowElementBorder(ctrlId);

ctrl.ErrorMessage = Msg + "不能为空!";

returnValues = false;

}

return returnValues;

}

/*

===================================================

验证下拉框是否为必填

===================================================

*/

function ValidataDropList(ctrl)

{

returnValues = true;

var ctrlId = ctrl.id;

var v = "";

v = StrTrim(ctrl.value);

kind = Validata(ctrl, v);

if (kind == false)

{

if (ctrl.selectedIndex != -1)

ctrl.options[ctrl.selectedIndex].style.bgcolor = "#5199EA";

ctrl.onfocus = function()

{

_onfocus(ctrl);

}

ctrl.onblur = function()

{

_onblur(ctrl);

}

var Msg = "";

if (ctrl.attributes["Msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["Msg"].value;

}

if (ctrl.attributes["msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["msg"].value;

}

if (document.getElementById("ErrorDiv").style.visibility != "visible" || !isShowTip)

{

ValidatorUpdateDisplay(document.getElementById("ErrorDiv"), ctrl, Msg + "必选其中一项!");

isShowTip = true;

}

returnValues = false;

ShowElementBorder(ctrlId);

//ctrl.className = "editTextarea";

}

else

{

HideElementBorder(ctrlId);

}

return returnValues;

}

function _onfocus(ctrl)

{

isShowTip = false;

if (ctrl.tagName.toLowerCase() == "input")

{

kind = ValidateTextBox(ctrl);

}

else if (ctrl.tagName.toLowerCase() == "textarea")

{

kind = ValidataTextArea(ctrl)

}

else if (ctrl.tagName.toLowerCase() == "select")

{

kind = ValidataDropList(ctrl);

}

}

function _onblur(ctrl)

{

isShowTip = true;

if (ctrl.tagName.toLowerCase() == "input")

{

kind = ValidateTextBox(ctrl);

}

else if (ctrl.tagName.toLowerCase() == "textarea")

{

kind = ValidataTextArea(ctrl)

}

else if (ctrl.tagName.toLowerCase() == "select")

{

kind = ValidataDropList(ctrl);

}

if (kind)

{

HideWinErrMsgTips("ErrorDiv");

}

}

/*

===================================================

创建DIV

*/

function CreateDiv()

{

var obj = document.getElementById("ErrorDiv");

if (obj == null || typeof (obj) == "undefined")

{

var newNode = document.createElement("div");

newNode.setAttribute("id", "ErrorDiv"); //设置属性

// newNode.innerHTML = "No.o";//<div >No.o</div>

document.getElementsByTagName("form")[0].appendChild(newNode); //添加子节点<form><div><div></form>

}

}

/*

===================================================================

验证输入的值

===================================================================

*/

function Validata(ctrl, val)

{

var returnValues = true;

//验证信息

var Msg = "";

if (ctrl.attributes["msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["msg"].value;

}

if (ctrl.attributes["Msg"] != null)

{

Msg = ctrl.attributes["Msg"].value;

}

ctrl.ErrorMessage = "";

//判断是否可以为空

var isNull = "true";

if (ctrl.attributes["isnull"] != null)

{

isNull = ctrl.attributes["isnull"].value.toLowerCase();

}

else if (ctrl.attributes["IsNull"] != null)

{

isNull = ctrl.attributes["IsNull"].value.toLowerCase();

}

if (isNull == "false" && val == "")

{

ctrl.onfocus = "ctrlonfocus(ctrl);"

ctrl.onblue = "ctrlonblur(ctrl);"

if (document.getElementById("ErrorDiv").style.visibility != "visible" || !isShowTip)

{

HideWinErrMsgTips("ErrorDiv");

ValidatorUpdateDisplay(document.getElementById("ErrorDiv"), ctrl, Msg + "不能为空!");

isShowTip = true;

}

ctrl.ErrorMessage = Msg + "不能为空!";

returnValues = false;

}

if (val != "")

{

if (!CheckText(ctrl))

{

returnValues = false;

}

}

return returnValues;

}

/*

==================================================

-------------验证数据精度-------------------

==================================================

*/

function CheckDataPrecision(ctrl, Msg)

{

var returnValues = true;

return returnValues;

}

/*

==================================================

-------------对输入的值进行验证-------------------

==================================================

*/

function CheckText(ctrl)

{

var returnValue = true;

ctrl.onfocus = "ctrlonfocus(ctrl);"

ctrl.onblue = "ctrlonblur(ctrl);"

var msgType;

var flag = true; //标识验证是否通过

var Msg = "";

if (ctrl.attributes["msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["msg"].value;

}

else if (ctrl.attributes["Msg"] != null)

{

Msg = ctrl.attributes["Msg"].value;

}

//*********************校验字段类型*********************************//

var type = "string";

if (ctrl.attributes["fieldtype"] != null)

{

type = ctrl.attributes["fieldtype"].value.toLowerCase();

}

else if (ctrl.attributes["FieldType"] != null)

{

type = ctrl.attributes["FieldType"].value.toLowerCase();

}

var val = StrTrim(ctrl.value);

switch (type.toLowerCase())

{

case "int":

case "smallint":

case "tinyint":

case "bigint":

//验证数据类型

if (isNaN(v))

{

msgType = "应输入数字!";

flag = false;

}

else if (!valNumber(v, type.toLowerCase()))

{

msgType = "输入的数值超出允许的范围!";

flag = false;

}

break;

case "varchar":

if (!VarcharValidLength(ctrl))

{

msgType = "输入内容过多!";

flag = false;

}

break;

case "nvarchar":

if (!NvarcharValidLength(ctrl))

{

msgType = "输入内容过多!";

flag = false;

}

break;

case "string":

if (!VarcharValidLength(ctrl))

{

msgType = "输入内容过多!";

flag = false;

}

break;

case "decimal":

if (!isDecimal(ctrl))

{

msgType = "输入的数字格式不正确!";

flag = false;

}

break;

}

//验证自定义正则表达式

if (flag)

{

if (!CheckRegex(ctrl))

{

var regexMsg = ""; //错误提示语

if (ctrl.attributes["regex"] != null && regexMsg.indexOf(RegexMark) > 0)

{

regexMsg = ctrl.attributes["regex"].value.split(RegexMark)[1];

}

msgType = "格式不正确!" + regexMsg;

flag = false;

}

}

if (!flag)

{

if (document.getElementById("ErrorDiv").style.visibility != "visible" || !isShowTip)

{

HideWinErrMsgTips("ErrorDiv");

ValidatorUpdateDisplay(document.getElementById("ErrorDiv"), ctrl, Msg + msgType + msgValue);

isShowTip = true;

}

returnValue = false;

}

return returnValue;

}

/*

======================================================

去除字符串左边及右边的空格

======================================================

*/

function StrTrim(str)

{

return str.replace(/(^/s*)|(/s*$)/g, "");

}

/*

====================================================================================

检测字符串是否有非法字符

====================================================================================

*/

function CheckOtherChars(str)

{

msgValue = "";

var chars = "!#%'/;'/"$^*|";

var i;

for (i = 0; i < str.length; i++)

{

if (chars.indexOf(str.charAt(i)) > -1)

{

msgValue = "不能含有‘!#%'/;'/"$^*|’非法字符!";

return false;

}

}

return true;

}

/*

================================================

清除查询条件

================================================

*/

function ClearCondition(ctrls)

{

var aryCtr = ctrls.split(",");

for (var j = 0; j < aryCtr.length; j++)

{

var obj = eval("document.all." + aryCtr[j]);

var Elements = obj.getElementsByTagName("*");

for (var i in Elements)

{

var ctrl;

try { ctrl = Elements[i]; }

catch (e)

{

continue;

}

var ctrlType;

try { ctrlType = ctrl.type.toLowerCase(); }

catch (e)

{

ctrlType = "";

}

//alert(tag);

if (ctrlType == "checkbox")

{

ctrl.checked = false;

}

if (ctrlType == "text" && ctrl.style.visibility != "hidden")

{

ctrl.value = "";

}

if (ctrlType == "select-one")

{

ctrl.selectedIndex = 0;

}

var ctrlTag;

try { ctrlTag = ctrl.tagName.toLowerCase(); }

catch (e)

{

ctrlTag = "";

}

//alert(ctrlType);

}

}

var objRadio = document.getElementsByTagName("input");

for (var i = 0; i < objRadio.length; i++)

{

if (objRadio(i).type == "radio")

{

var radioGroup = objRadio(i).name

var radioButton = eval("document.all." + radioGroup + "")

radioButton[1].checked = true;

continue;

}

}

}

//////////////////////////////////////////////////////////////////////////Tip

var __Win__IsAutoClose = true;

var __Win__IsFilterClose = true;

var __Win__CloseWaitTime = 5500;

if (typeof (__Win__IsAutoClose) == "undefined" || typeof (__Win__IsFilterClose) == "undefined" || typeof (__Win__CloseWaitTime) == "undefined")

{

alert("初始化Js失败,请确定正确使用了气泡提示验证控件!")

}

var __Win__BlockFlag = false;

//关闭气泡提示

function HideWinErrMsgTips(elementid)

{

var ua = navigator.userAgent.toLowerCase();

var isOpera = (ua.indexOf('opera') != -1);

var isIE = (ua.indexOf('msie') != -1 && !isOpera);

var objWinDiv = document.getElementById(elementid);

if (isIE && typeof (__Win__IsFilterClose) != "undefined" && __Win__IsFilterClose)

{

__Win__BlockFlag = false;

HideIEWinErrMsgTips(objWinDiv.id);

}

else

{

objWinDiv.style.visibility = "hidden";

}

}

function HideDiv(elementid)

{

var obj___ = document.getElementById(elementid + "____")

if (obj___ == null || typeof (obj___) == "undefined")

{

return;

}

var opacty = obj___.filters.alpha.opacity;

obj___.filters.alpha.opacity = 100;

document.getElementById(elementid).style.visibility = "hidden";

}

function HideIEWinErrMsgTips(elementid)

{

var obj___ = document.getElementById(elementid + "____")

if (obj___ == null || typeof (obj___) == "undefined")

{

return;

}

var opacty = obj___.filters.alpha.opacity;

document.getElementById(elementid).style.visibility = "hidden";

}

function ValidatorUpdateDisplay(val, val2, msg)

{

var closestr = "<div id=/"tipdown/" style=/"position:absolute;z-index:9999;/" class=/"tip-down/"></div><span style=/"cursor:pointer;color:red/" title=/"关闭提示/" onclick=/"HideWinErrMsgTips('" + val.id + "')/">关闭</span> ";

val.innerHTML = "<div style=/"position:absolute;z-index:9999;filter:alpha(opacity=100)/" class='tip-bg' id='" + val.id + "____'><div class=/"tip-bulb/">  " + msg + closestr + "</div></div>";

obj = document.getElementById(val.id)

var obj2 = document.getElementById(val.id + "____");

var WinElementPos = getWinElementPos(val2)

if (WinElementPos == false)

{

//debugger;

}

else

{

//提示中向下的小角

var objtipdown = document.getElementById("tipdown");

if (val2.offsetParent.cellIndex > 2 && obj2.offsetWidth > val2.offsetParent.offsetWidth)

{

obj2.style.left = (parseInt(isIE ? val2.parentTextEdit.offsetWidth : val2.ownerDocument.width) - parseInt(obj2.offsetWidth)).toString() + "px";

//控制提示中向下的小角

objtipdown.style.left = (parseInt(WinElementPos.x) - (parseInt(isIE ? val2.parentTextEdit.offsetWidth : val2.ownerDocument.width) - parseInt(obj2.offsetWidth))).toString() + "px";

objtipdown.style.top = "0px";

}

else

{

objtipdown.style.top = "0px";

objtipdown.style.left = "0px";

obj2.style.left = (parseInt(WinElementPos.x)).toString() + "px";

}

if (val2.tagName.toLowerCase() == "textarea")

{

obj2.style.top = (parseInt(WinElementPos.y) - 20 - 6).toString() + "px";

}

else if (val2.tagName.toLowerCase() == "select" && val2.size > 0)

{

obj2.style.top = (parseInt(WinElementPos.y) - 20 - 6).toString() + "px";

}

else

{

obj2.style.top = (parseInt(WinElementPos.y) - parseInt(WinElementPos.h) - 6).toString() + "px";

}

}

val.style.visibility = val.isvalid ? "hidden" : "visible";

__Win__BlockFlag = true;

//if (typeof (__Win__IsAutoClose) != "undefined" && __Win__IsAutoClose && typeof (__Win__CloseWaitTime) != "undefined")

// setTimeout("HideWinErrMsgTips('" + val.id + "')", __Win__CloseWaitTime);

}

//得到某obj的x,y坐标,兼容大部分的浏览器

function getWinElementPos(obj)

{

var ua = navigator.userAgent.toLowerCase();

var isOpera = (ua.indexOf('opera') != -1);

var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

var el = obj;

if (el.parentNode === null || el.style.display == 'none')

{

return false;

}

var parent = null;

var pos = [];

var box;

if (el.getBoundingClientRect) //IE

{

box = el.getBoundingClientRect();

var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);

var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);

return { x: box.left + scrollLeft, y: box.top + scrollTop, h: box.bottom - box.top };

}

else if (document.getBoxObjectFor) // gecko

{

box = document.getBoxObjectFor(el);

var borderLeft = (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth) : 0;

var borderTop = (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth) : 0;

pos = [box.x - borderLeft, box.y - borderTop];

}

else // safari & opera

{

pos = [el.offsetLeft, el.offsetTop];

parent = el.offsetParent;

if (parent != el)

{

while (parent)

{

pos[0] += parent.offsetLeft;

pos[1] += parent.offsetTop;

parent = parent.offsetParent;

}

}

if (ua.indexOf('opera') != -1 || (ua.indexOf('safari') != -1 && el.style.position == 'absolute'))

{

pos[0] -= document.body.offsetLeft;

pos[1] -= document.body.offsetTop;

}

}

if (el.parentNode)

{

parent = el.parentNode;

}

else

{

parent = null;

}

while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')

{ // account for any scrolled ancestors

pos[0] -= parent.scrollLeft;

pos[1] -= parent.scrollTop;

if (parent.parentNode)

{

parent = parent.parentNode;

}

else

{

parent = null;

}

}

return { x: pos[0], y: pos[1] };

}

//////////////////////////////////////////////////////////////////////////Function

// JScript 文件

//显示虚线边框

function ShowElementBorder(ctrlId)

{

var ctrl = document.getElementById(ctrlId);

ctrl.parentNode.className = isIE ? "span_dashed" : "span_dashed_ff";

//objWinDiv.style.visibility = "hidden";

}

//隐藏虚线边框

function HideElementBorder(ctrlId)

{

var ctrl = document.getElementById(ctrlId);

ctrl.parentNode.className = isIE ? "span_solid" : "span_solid_ff";

}

//显示红色边框

function AddBorder(ctrlId)

{

var ctrl = document.getElementById(ctrlId);

BorderSpan = document.createElement('span');

BorderSpan.id = 'span_' + ctrl.id;

BorderSpan.className = 'span_solid';

ParentSpanNumber = ctrl.parentNode.getElementsByTagName("span").length;

var obj = document.getElementById('span_' + ctrl.id);

//防止当不停地点击保存按钮时会出现很多span,

//if (ParentSpanNumber == 1)

if (obj == null || typeof (obj) == "undefined")

{

ctrl.parentNode.insertBefore(BorderSpan, ctrl); //关键所在

BorderSpan.appendChild(ctrl);

}

//val.style.visibility = val.isvalid ? "hidden" : "visible";//问号表达式,若isvalid为真时,visibility=hidden,否则为visible,isvalid是控件的属性

}

//验证varchar的输入长度

//ctrl 待验证的控件

function VarcharValidLength(ctrl)

{

var length = 0;

//验证普通文本

if (ctrl.attributes[MaxLength] != null)

{

length = ctrl.attributes[MaxLength].value;

}

//验证多行文本(多行文本会隐藏MaxLength属性)

else if (ctrl.attributes["textlength"] != null)

{

length = ctrl.attributes["textlength"].value;

}

else if (ctrl.attributes["TextLength"] != null)

{

length = ctrl.attributes["TextLength"].value;

}

else

{

return true;

}

var objstr = ctrl.value;

//输入内容的长度

var objlength = ctrl.value.length;

while (objstr.length > 0)

{

//判断中文所在位置

var i = escape(objstr).indexOf('%u');

if (i != -1)

{

//截取中文之后的内容

objstr = objstr.substring(i + 1);

//增加长度

objlength++;

}

else

{

break;

}

}

if (objlength > length)

{

return false;

}

return true;

}

//验证nvarchar的输入长度

//ctrl 待验证的控件

function NvarcharValidLength(ctrl)

{

var length = 0;

if (ctrl.attributes[MaxLength] != null)

{

length = ctrl.attributes[MaxLength].value;

}

else if (ctrl.attributes[TextLength] != null)

{

length = ctrl.attributes[TextLength].value;

}

else

{

return true;

}

var objlength = ctrl.value.length;

if (objlength > length)

{

return false;

}

return true;

}

//验证Decimal的输入长度

//ctrl 待验证的控件

function isDecimal(ctrl)

{

//判断是否为数值

if (!isNaN(StrTrim(ctrl.value)))

{

var number = StrTrim(ctrl.value);

var precision = "";

if (ctrl.attributes["precision"] != null)

{

//获取设置的精度控制

precision = ctrl.attributes["precision"].value;

}

//拆分整数位和小数位

var pre = precision.split(",");

var num = number.split(".");

if (num[1])//存在小数位的情况

{

//小数位是否超出有效位数(不包括有效位数之后为0的)

if (num[1].length > parseInt(pre[1], 10) && parseInt(num[1].substr(pre[1]), 10) != 0)

{

return false;

}

//整数位是否超出

else if (String(parseInt(num[0]), 10).length > parseInt(pre[0], 10) - parseInt(pre[1], 10))

{

return false;

}

}

else if (num[0].length > parseInt(pre[0], 10) - parseInt(pre[1], 10))//不存在小数位直接判断有效位数是否超出

{

return false;

}

return true;

}

else

{

return false;

}

}

//验证输入数值的长度

//ctrl 待验证的控件

//type 验证的类型

function valNumber(v, type)

{

var flag = false;

switch (type)

{

case "int":

if (parseInt(v, 10) >= -2147483648 && parseInt(v, 10) <= 2147483647)

flag = true;

break;

case "smallint":

if (parseInt(v, 10) >= -32768 && parseInt(v, 10) <= 32767)

flag = true;

break;

case "tinyint":

if (parseInt(v, 10) >= 0 && parseInt(v, 10) <= 255)

flag = true;

break;

case "bigint":

if (parseInt(v, 10) >= -9223372036854775808 && parseInt(v, 10) <= 9223372036854775807)

flag = true;

break;

}

return flag;

}

/*

======================================================================================

验证自定义表达式

======================================================================================

*/

function CheckRegex(ctrl)

{

var regex = ""; //自定义正则字符串

if (ctrl.attributes["regex"] != null)

{

regex = ctrl.attributes["regex"].value;

}

else

{

return true;

}

var regexExpression = regex.split(RegexMark)[0]; //正则表达式

var testRe = "";

switch (regexExpression)

{

case "mail":

testRe = "^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$";

break;

case "shortdate":

testRe = "^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$";

default:

testRe = regexExpression;

break;

}

var re = new RegExp(testRe);

if (re.test(ctrl.value))

{

return true;

}

else

{

return false;

}

}

//显示控件的边框和提示

function show(ctrl, _function, value)

{

var ctrlid = ctrl.id;

var Msg = "";

var tip = value;

ctrl.onfocus = "ctrlonfocus(ctrl);"

ctrl.onblue = "ctrlonblur(ctrl);"

if (value == null || value == "")

{

tip = "不能为空!";

}

if (ctrl.attributes["msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["msg"].value;

}

else if (ctrl.attributes["Msg"] != null)//该文本代表的信息,这些属性是公司框架自定义的

{

Msg = ctrl.attributes["Msg"].value;

}

CreateDiv();

AddBorder(ctrlid);

ShowElementBorder(ctrlid);

if (isShowCustomTip == true)

{

if (document.getElementById("ErrorDiv").style.visibility != "visible")

{

ValidatorUpdateDisplay(document.getElementById("ErrorDiv"), ctrl, Msg + tip);

}

}

//增加控件事件

ctrl.onfocus = function()

{

isShowCustomTip = true;

HideWinErrMsgTips("ErrorDiv");

_function();

}

ctrl.onblur = function()

{

isShowCustomTip = true;

HideWinErrMsgTips("ErrorDiv");

_function();

}

//处理checkboxlist

if (ctrlid.toLowerCase().indexOf("checkboxlist") != -1) {

var objctrl = isIE ? ctrl : ctrl.rows[0];

for (var i = 0; i < objctrl.cells.length; i++)

{

for (var j = 0; j < objctrl.cells[i].children.length; j++)

{

if (j % 2 == 0)

{

objctrl.cells[i].children[j].onclick = function()

{

var obj1 = ctrl;

var inputs = obj1.getElementsByTagName("input");

var ischeck = false;

for (var i = 0; i < inputs.length; i++)

{

if (inputs[i].checked)

{

ischeck = true;

break;

}

}

isShowCustomTip = !ischeck;

HideWinErrMsgTips("ErrorDiv");

_function();

}

objctrl.cells[i].children[j].onfocus = objctrl.cells[i].children[j].onclick;

}

else

{

objctrl.cells[i].children[j].onclick = function()

{

var obj1 = ctrl;

var inputs = obj1.getElementsByTagName("input");

var ischeck = false;

for (var i = 0; i < inputs.length; i++)

{

if (inputs[i].checked)

{

ischeck = true;

break;

}

}

isShowCustomTip = !ischeck;

HideWinErrMsgTips("ErrorDiv");

_function();

}

objctrl.cells[i].children[j].onblur = objctrl.cells[i].children[j].onclick;

}

}

}

}

}

//隐藏控件的提示

function hidden(ctrl)

{

var ctrlid = ctrl.id;

// HideWinErrMsgTips("ErrorDiv");

HideElementBorder(ctrlid);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐