1

入力の onchange スクリプトをRangeValidator のスクリプトの 前に強制的に実行するにはどうすればよいですか?

ユーザーがドル記号またはコンマを入力したときに検証が失敗するのを防ぎたいです。

function cleanUp(str) {
    re = /^\$|,/g;
    return str.replace(re, ""); // remove "$" and ","
}

<input type="text" id="salary" runat="server"
onchange="this.value=cleanUp(this.value)" />

<asp:RangeValidator ID="salaryValidator" 
    runat="server" ErrorMessage="Invalid Number"
    ControlToValidate="salary" Type="Double" />

更新:
範囲をチェックし、通貨の正規表現を使用する CustomValidator を使用することにしました。ありがとうマイケル・ニスカーン。

function IsCurrency(sender, args) {
    var input = args.Value;

    // Check for currency formatting.
    // Expression is from http://regexlib.com/REDetails.aspx?regexp_id=70
    re = /^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$/;
    isCurrency = input.match(re);

    if (isCurrency) {
        // Convert the string to a number.
        var number = parseFloat(CleanUp(input));
        if (number != NaN) {
            // Check the range.
            var min = 0;
            var max = 1000000;
            if (min <= number && max >= number) {
                // Input is valid.
                args.IsValid = true;
                return;
            }
        }
    }

    // Input is not valid if we reach this point.
    args.IsValid = false;
    return;
}

function CleanUp(number) {
    re = /^\$|,/g;
    return number.replace(re, ""); // remove "$" and ","
}       

<input type="text" id="salary" runat="server" />

<asp:CustomValidator ID="saleryValidator" ControlToValidate="salary" runat="server" 
ErrorMessage="Invalid Number" ClientValidationFunction="IsCurrency" />
4

4 に答える 4

3

私はそれを改善できると思います。これにより、コンマとセントの数字がオプションになります。

^\$?([0-9]{1,3},?([0-9]{3},?)*[0-9]{3}|[0-9]+)(\.[0-9]{0,2})?$
于 2011-03-04T00:02:53.293 に答える
3

CustomerValidator コントロールを使用して、JS クリーンアップ メソッドと RangeValidator メソッドの機能を組み合わせてみましたか。

于 2008-12-09T22:09:39.800 に答える
0

「。」があることに気づきました。小数点の場合ですが、これは、正規表現がその場所の任意の文字を受け入れることを意味します。\.その小数点には使用する必要があります。

/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
于 2009-11-17T23:45:55.723 に答える
0

スクリプトを登録することでこれを行う方法があります。しかし、正規表現バリデーターを使用して、入力が適切であることを確認してみませんか?

また、Range バリデーターはフィールドの変更時ではなく onBlur js イベントで実行されます。

于 2008-12-09T21:55:40.173 に答える