0

asp.net プロジェクトで、テキスト ボックスに入力中に数字をグループ化したい。例: 123456123456 123.456.123.456

私の目的は、IPアドレスをグループ化することではありません。数字を読みやすくしたい。例: 12.000.152.156.123.156

これどうやってするの?

4

3 に答える 3

2

これはマスキングと呼ばれ、それを実現する方法はいくつかあります。

ASP.NET を初めて使用する場合は、

ASP.NET Ajax コントロール ツールキット

マスク編集を利用する

jQuery のファンなら、マスク プラグインを簡単に使用できます。いくつかありますが、JsBinでの使用例を次に示します。

マスクされた入力 jQuery プラグイン

IP アドレスの場合、以下を使用したJsBinの実際の例を次に示します。

IP アドレス jQuery プラグイン


コメントから、読みやすくするために数値のみをグループ化したいことがわかります。そのため、JsBin witchのライブ例を確認できます。

ティム・シュメルターの回答コード

于 2012-05-08T11:26:25.283 に答える
1

編集:代わりにサーバー側でそれを行いたい場合(javascriptにタグを付けないでください。人々はクライアント側のソリューションを提供するために多くの時間を費やしてきました):

double number = 123456123456;
String numeric = String.Format("{0:#,0}", number); // "123.456.123.456"

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx


バレクサンドルによって追加されました

いつでも簡単な検証を追加できます

using System.Net;

IPAddress ip = new System.Net.IPAddress(); 
if(IPAddress.TryParse(numeric, out ip))
    // you get a valid IP Address in the ip variable
else
    // IP Address not valid, go back and ask again...

数値文字列値に千区切り記号を追加する場合は、次の関数を使用できます。

<script type="text/javascript">
    function groupDigit(strDigit, separator) {
        if (separator == null || separator.length == 0) separator = ".";
        strDigit += '';
        x = strDigit.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + separator + '$2');
        }
        return x1 + x2;
    }
</script>

テスト:

alert(groupDigit("123456123456", ".")); // 123.456.123.456
于 2012-05-08T11:27:24.033 に答える
0

このJqueryプラグインを使用できますhttp://webdeveloperplus.com/jquery/how-to-mask-input-with-jquery/

これの利点は、フォーマットがどのようになるかをユーザーに正確に表示することです。

于 2012-05-08T11:19:37.660 に答える