2009-08-10 71 views
0

我试图更新通过javascript使用ValidatorCallOut的CustomValidator的错误消息。基本上它检查输入的数字是否是指定数字的增量。我有一些代码会在第一次运行时更新错误消息,但在此之后,它将不再更新错误消息,尽管通过JavaScript警报我看到值实际上正在更新。下面是客户端我使用JavaScript验证功能:更新Javascript中的ValidatorCallOut错误消息

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; 
} 

如何保持更新一次,这是运行时间验证错误消息的任何想法?

回答

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"; 
} 

为什么一旦被初始化的消息坚持的原因是因为标注不最初创建。一旦创建完成,标注就隐藏起来,并且在随后的显示中不会重新创建。因此,它在创建时被初始化的消息将坚持并持续。上面的代码是一个黑客,真的应该有一个沿着set_ErrorMessage的方法,但没有一个。

+0

这工作完美谢谢星火。这个答案应该被标记为解决。 – Somedeveloper 2011-02-08 10:00:21