0

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

これが検証のために実行されるたびにエラーメッセージを更新し続ける方法についてのアイデアはありますか?

4

1 に答える 1

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は非表示になり、その後の表示では再作成されません。したがって、作成時に初期化されたメッセージは保持されます。上記のコードはハックであり、実際にはset_ErrorMessageの行に沿ってメソッドがあるはずですが、1つはありません。

于 2009-09-25T20:55:09.243 に答える