首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的文本框百分比验证

javascript中的文本框百分比验证
EN

Stack Overflow用户
提问于 2010-09-28 13:57:13
回答 4查看 3.8K关注 0票数 0

如何对文本框中的百分比数字进行验证。我需要验证这些类型的数据

例如: 12-3,33.44a,44。,a3.56,123

提前感谢sri

EN

回答 4

Stack Overflow用户

发布于 2011-06-03 19:41:03

‘添加文本框’

代码语言:javascript
复制
<asp:TextBox ID="PERCENTAGE" runat="server"
onkeypress="return ispercentage(this, event, true, false);"
MaxLength="18" size="17"></asp:TextBox>

‘复制下面的功能并粘贴到标签中..’

代码语言:javascript
复制
 <script type="text/javascript">
 function ispercentage(obj, e, allowDecimal, allowNegative) 
 {
   var key;
   var isCtrl = false;
   var keychar;
   var reg;
   if (window.event) 
   {
     key = e.keyCode;
     isCtrl = window.event.ctrlKey
   }
   else if (e.which)
   {
     key = e.which;
     isCtrl = e.ctrlKey;
   }
   if (isNaN(key)) return true;
   keychar = String.fromCharCode(key);
   // check for backspace or delete, or if Ctrl was pressed
   if (key == 8 || isCtrl)
   {
     return true;
   }
   ctemp = obj.value;
   var index = ctemp.indexOf(".");
   var length = ctemp.length;
   ctemp = ctemp.substring(index, length);
   if (index < 0 && length > 1 && keychar != '.' && keychar != '0')
   {
     obj.focus();
     return false;
   }
   if (ctemp.length > 2)
   {
     obj.focus();
     return false;
   }
   if (keychar == '0' && length >= 2 && keychar != '.' && ctemp != '10') {
     obj.focus();
     return false;
   }
   reg = /\d/;
   var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
   var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
   return isFirstN || isFirstD || reg.test(keychar);
}
</script>
票数 2
EN

Stack Overflow用户

发布于 2010-09-28 14:24:37

如果您正在讨论检查给定文本是否为有效百分比,您可以做以下几件事之一。

  • 使用像^[0-9]+\.?[0-9]*$这样的正则表达式验证它,然后将其转换为浮点值,并检查它是否在0到100之间(该特定正则表达式要求小数点前的零对于小于1的值,但您可以调整它以处理浮点数,方法是在无效数据上引发异常(而不仅仅是在第一个错误字符处停止。
  • 使用卷积正则表达式检查有效条目,而不必转换为浮点数。
  • 只需通过字符计数数字(a)遍历文本字符,小数点(b)和非数字(c)。如果a至少为1,b至多为1,c为0,则转换为浮点型。

我不知道您的环境是否支持这些选项中的任何一个,因为您实际上没有指定它是什么:-)

但是,我更喜欢选项1、2、4和3(按这个顺序),因为我不是一个很喜欢卷积正则表达式的人。我倾向于认为,当它们变得复杂到不到三秒就能理解时,它们弊大于利。

票数 0
EN

Stack Overflow用户

发布于 2010-09-28 14:28:11

您可以进一步优化此表达式。目前,它适用于所有给定的模式。

代码语言:javascript
复制
^\d*[aA]?[\-.]?\d*[aA]?[\-.]?\d*$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3810070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档