是否可以为 CompareValidator 添加一个 JS 验证功能?
我不能使用 CustomValidator。
问问题
833 次
1 回答
0
我不确定你是否仍然需要它,但我认为不需要,因为这没有答案......
好吧,您不能直接这样做,但是您可以隐藏负责 CompareValidator 验证的原始函数并引入新函数。这是可能的,因为所有验证功能都来自全局范围内的 ASP.NET,这是……有争议的,但在这种情况下很有帮助。
请找到以下完成工作的模块。它向您展示了两种方法。首先调用addFunction允许您添加一个或多个函数以进行自定义验证。此函数应返回布尔值,并分别使用三个参数Validator object、TargetObject和CompareObject。第二个称为disableOldFunction允许您完全摆脱模块调用的旧验证函数,如果您的所有函数都有效。
var MyModules = {};
MyModules.CompareValExtension = function ()
{
var functions = new Array();
var oldFunc = null, disabled = false;
function myCompareValidatorEvaluateIsValid(val)
{
var valid = true;
if (oldFunc && functions.length)
{
for (i in functions)
{
valid = functions[i](val, document.getElementById(val.controltovalidate), document.getElementById(val.controltocompare));
if (!valid) { break; }
}
if (!disabled && valid)
{
valid = oldFunc(val);
}
}
return valid;
}
if (typeof CompareValidatorEvaluateIsValid != 'undefined')
{
oldFunc = CompareValidatorEvaluateIsValid;
window.CompareValidatorEvaluateIsValid = myCompareValidatorEvaluateIsValid;
}
var me = {};
me.addFunction = function (func) { if (typeof func == "function") { functions.push(func); } }
me.disableOldFunction = function () { disabled = true; }
return me;
} ();
示例用法:
MyModules.CompareValExtension.addFunction(function (val, elem, comp)
{
return elem.value == "my value";
});
MyModules.CompareValExtension.disableOldFunction();
警告:请将此模块放在页面底部的某个位置,以确保默认验证脚本已经到位。您还可以稍微重写模块以推迟初始化,直到文档准备好。
于 2011-11-12T19:25:31.310 回答