Обновление сообщения об ошибке ValidatorCallOut из Javascript - PullRequest
0 голосов
/ 10 августа 2009

Я пытаюсь обновить сообщение об ошибке для CustomValidator, который использует ValidatorCallOut через JavaScript. В основном это проверка, чтобы увидеть, является ли введенное число шагом определенного числа. У меня есть код, который будет обновлять сообщение об ошибке при первом запуске, но после этого он больше не будет обновлять сообщение об ошибке, хотя через предупреждения 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 Ответ

3 голосов
/ 26 сентября 2009

Попробуйте следующее:

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 просто скрыт и не воссоздается при последующем показе. Таким образом, сообщение о том, что оно было инициализировано при создании, останется и сохранится. Приведенный выше код является хаком, и действительно должен быть метод в духе set_ErrorMessage, но его нет.

...