在验证之前我修剪arguments.Value
。如果验证失败,我想将修剪后的值放回输入。更改arguments.Value
无效。 Sender
(ClientValidationFunction
中的第一个参数)是验证控件消息布局,而不是原始输入。
我看到唯一的方法:手动搜索输入元素的id,或名称,或类,但它让我的ClientValidationFunction
知道某些输入,我必须设置ClientID
或唯一的类我的意见。
答案 0 :(得分:0)
作为客户端验证函数的val
参数传递的Validator对象具有controltovalidate
字段,该字段包含服务器控件的唯一ID(在ControlToValidate
CustomValidator
属性中指定) 。因此,您可以轻松地将值设置回控件,如下所示:
function trimAndSetBack(val, args) {
// val.controltovalidate will always hold unique id
// of the server control so document.getElementById will work always
ValidatorSetValue(val.controltovalidate, ValidatorTrim(eventArgs.Value));
}
function ValidatorSetValue(id, value) {
var control;
control = document.getElementById(id);
if (typeof (control.value) == "string" && (control.type != "radio" || control.checked == true)) {
control.value = value;
return true;
}
var i;
for (i = 0; i < control.childNodes.length; i++) {
if (ValidatorSetValue(control.childNodes[i], value)) {
return true;
}
}
return false;
}
ValidatorSetValue
是标准ValidatorGetValueRecursive
函数的位修改版本。如果您处理输入控件嵌套在其中的用户控件,则需要递归。