2009-08-10 9 views
0

J'essaie de mettre à jour le message d'erreur pour un CustomValidator qui utilise un ValidatorCallOut via javascript. Fondamentalement, sa vérification pour voir si un nombre entré est un incrément d'un nombre spécifié. J'ai un code qui mettra à jour le message d'erreur la première fois qu'il est exécuté, mais après cela, il ne mettra plus à jour le message d'erreur, bien que grâce aux alertes javascript, je vois que les valeurs sont en cours de mise à jour. Voici le côté client fonction javascript validation J'utilise:Mise à jour de ValidatorCallOut Message d'erreur de 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; 
} 

Toute idée sur la façon de garder le message d'erreur mis à jour chaque fois que cela est exécuté pour valider?

Répondre

3

les opérations suivantes:

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

La raison pour laquelle le message colle une fois qu'il a été initialisé est parce que Callout n'est pas créé initialement. Une fois créée, la légende est simplement masquée et n'est pas recréée lors de l'affichage ultérieur. Ainsi, le message avec lequel il a été initialisé avec quand il a été créé restera et restera. Le code ci-dessus est un hack et il devrait y avoir une méthode sur le modèle de set_ErrorMessage, mais il n'y en a pas.

+0

cela a fonctionné parfaitement grâce à Spark. cette réponse devrait être marquée comme résolue. – Somedeveloper