从Javascript更新ValidatorCallOut错误消息

时间:2009-08-10 15:38:57

标签: asp.net javascript validation customvalidator

我正在尝试更新通过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;
}

关于如何在每次运行验证时保持错误消息更新的任何想法?

1 个答案:

答案 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的方法,但没有一个。