Question

Je suis en train de mettre à jour le message d'erreur pour un CustomValidator qui utilise un ValidatorCallOut via javascript. Fondamentalement, son contrôle 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 sera plus mise à jour le message d'erreur, même si par javascript alertes je vois les valeurs sont effectivement mises à jour. Voici la fonction de validation javascript côté client J'utilise:

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

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

Était-ce utile?

La solution

Effectuez 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 qu'il a été créé, est tout simplement caché Callout et ne recréée sur présentation ultérieure. Ainsi, le message qu'il a été initialisé avec quand il a été créé collera et persister. Le code ci-dessus est un hack et il devrait vraiment être une méthode dans le sens de set_ErrorMessage, mais il n'y en a pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top