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女巫中的实时示例是使用以下方法制作的:

蒂姆·施梅尔特答案代码

于 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


balexandre添加

你可以随时添加一些简单的验证

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 回答