我正在尝试更新通过javascript使用ValidatorCallOut的CustomValidator的错误消息。基本上它检查输入的数字是否是指定数字的增量。我有一些代码将在第一次运行时更新错误消息,但之后它将不再更新错误消息,尽管通过javascript警报我看到值实际上正在更新。这是我正在使用的客户端javascript验证功能:
function checkIncrement(sender, args) {
var incrementValue = parseInt(sender.orderIncrement); // Custom attribute registered with RegisterExpandoAttribute
var remainder = args.Value % incrementValue;
if ((remainder) != 0) {
var remainder, lowRange, highRange;
lowRange = parseInt(args.Value - remainder);
highRange = parseInt(lowRange + incrementValue);
sender.errormessage = "Closest possible values are <b>" + lowRange + "</b> or <b>" + highRange + "</b>"; // Gets updated once, but not after that
alert("Low Range: " + lowRange); // always updated with current value
args.IsValid = false;
return;
}
args.IsValid = true;
}
关于如何在每次运行验证时保持错误消息更新的任何想法?
答案 0 :(得分:3)
尝试以下方法:
sender.errormessage = "Your message here";
var cell = sender.ValidatorCalloutBehavior._errorMessageCell;
// cell is going to be null first time.
if (cell != null) {
cell.innerHTML = "Your message here";
}
消息初始化后粘贴的原因是因为最初没有创建Callout。一旦创建,Callout就会被隐藏,并且不会在后续显示中重新创建。因此,它在创建时初始化的消息将坚持并持续存在。上面的代码是一个hack,确实应该有一个类似set_ErrorMessage的方法,但没有一个。