没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2007-10-23 09:44:28.000|阅读 1421 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
导言:
所有的程序都必须是“傻瓜式”的,因此我们正创建检验用户输入的控件,这便是其中之一。在这个网站(译者注:codeproject)我只找到了针对 windows forms 的解决方案。以下是 ASP.NET 解决方案的展示:
首先,对于控件有这样一个概念,它必须具备以下能力:
可选择输入负数
可选择输入小数或整数
可以从语言环境设置中自由选择或下载小数分隔符
处理 ctrl+v
具备跨浏览器的兼容性
解决方案——关键点
处理所有的字符――最后我选择了“onkeypress”事件,因为如果基于这一事件的方法返回错误的话,字符将不会被键入文本框
过滤字符――所有字符都只有一个键代码,所以我只得把被允许的字符都列了个清单(由数字键盘上输入的数字与键盘顶行输入的数字的代码是不同的)并且像 Shift, BackSpace, Delete and arrows 这些功能键都必须是被允许的-只需一会儿的检测
可选择减号――减号必须是这一数值的第一个字符,因此我必须对有兼容性问题的光标位置进行校对,最后解决如下:
· function getCursorPosition(txt)
· {
· if(document.selection) // IE
· {
· txt.focus();
· var oSel = document.selection.createRange();
· oSel.moveStart('character', -txt.value.length);
· return oSel.text.length;
· }
· else(txt.selectionStart) // Firefox etc.
· return txt.selectionStart;
· }
可选择小数分隔符――哪一个?――这一控件允许输入小数或整数,但是不同国家使用不同的小数分隔符,所以我制作了一个能根据文化背景动态下载设置的方法:
private char GetDecimalSeparatorFromLocale()
{
return (System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator.ToCharArray())[0];
}
小数分隔符必须符合一下几个条件:
必须是第一个字符
必须不是在减号后面
在一个数值中必须只有一个小数分隔符
这一“优美”的条件可检测所有这些条件:
if(txt.value.replace("-", "").length > 0 && getCursorPosition(txt) > 0 && txt.value.indexOf(decimalSeparator) == -1 && decimals)
return true;
else
return false;
break;
。处理 Ctrl + V——我曾多次去解决这一问题,最后最简单的方法却运作地最好,在“onchage”事件中有一检测方法。除了数字,可选择地减号以及小数字符外,不管字符是否被允许,都可以被检测
Collapse
function CheckString(txt, negative, decimals, decimalSeparator)
{
var res = "";
var decimalSeparatorCount = 0;
for(i = 0; i < txt.value.length; i++)
{
if(i == 0 && txt.value.charAt(0) == "-" && negative)
res = "-";
else
{
if(IsNumber(txt.value.charAt(i))) // IsNumber function returns true if the char is 0-9
res += txt.value.charAt(i);
else
{
if(txt.value.charAt(i) == decimalSeparator && decimalSeparatorCount == 0 && decimals)
{
res += txt.value.charAt(i);
decimalSeparatorCount++;
}
}
}
}
txt.value = res;
}
跨浏览器的兼容性
就如我上文提到的,IE6,7对于确定光标位置有问题 Safari 为不同的功能键返回不同的键代码-对所有的键返回0,但是数字以及其他一些不被允许的字符的代码运行正常。已被检测的浏览器:IE 6,7, Opera 9, Firefox 2, Safari for windows beta 3, Netscape 8 (与 firefox 一样, 用于 Gecko engine)
使用代码
使用这一代码很简便,因为它继承了文本框格式,因此你可以校验和访问文本框里的值
<cp:NumericTextBox AllowNegative="true" AllowDecimals="true" runat="server" ID="NumericTextBox1" />
这一控件主要是基于 javascript,因此它可以简单地运用于其他平台。例如 PHP, JSP 等等,也可以用于 ASP.NET。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:csdn面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号