1
是否可以爲CompareValidator添加JS驗證函數?
我不能使用CustomValidator。在CompareValidator上添加JS驗證
是否可以爲CompareValidator添加JS驗證函數?
我不能使用CustomValidator。在CompareValidator上添加JS驗證
我不知道你是否還需要與否,我想不但是因爲這是沒有答案......
嗯,你不能這樣做直接,但您可以隱藏原來的函數,它是負責CompareValidator驗證並推出新的。這是可能的,因爲所有驗證函數都來自全球範圍內的ASP.NET,這是有爭議的,但在這種情況下很有幫助。
請找到以下模塊完成工作。它暴露你兩種方法。首先調用addFunction允許您爲自定義驗證添加一個或多個函數。這個功能應該返回布爾和消耗三個參數Validator對象,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-01-06 10:08:00
我想比較日期,但由於應用程序可以處理不同的日期格式,所以comparevalidator無法正常工作。所以我想如果我可以創建我自己的驗證功能,它會好得多。我現在正在重寫BaseValidator來解決我的問題,但有了這個解決方案,我應該回到每個頁面並重命名驗證器。 – scatman 2011-01-06 10:20:47