【问题标题】:Textbox only allow floating point number文本框只允许浮点数
【发布时间】:2013-09-24 10:21:13
【问题描述】:

这里是html中的代码,允许文本框中只有一个小数点:

<html>
<head>

 <script type="text/javascript" language="javascript"> 

    function isNumberKey(evt) { 
         var charCode = (evt.charCode) ? evt.which : event.keyCode


         if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46) 
             return false; 
         else { 
         var input = document.getElementById("txtChar").value;
             var len = document.getElementById("txtChar").value.length; 
             var index = document.getElementById("txtChar").value.indexOf('.'); 

             if (index > 0 && charCode == 46) { 
                 return false; 
             } 
             if (index >0 || index==0) { 
                 var CharAfterdot = (len + 1) - index; 
                 if (CharAfterdot > 2) { 

                     return false; 
                 } 

        }

    if (charCode == 46 && input.split('.').length >1) {
        return false;
        }


         } 
         return true; 
      } 
      </script> 


</head>
<body>
<input type="text" id="txtChar" onkeypress="return isNumberKey(event)"  name="txtChar" class="CsstxtChar" maxlength="4"/>
</body>
</html>

我想使用 c# 在 asp.net 中完成此操作。此代码在 asp.net 中无法正常工作。

【问题讨论】:

标签: javascript asp.net


【解决方案1】:

使用它会有帮助....

$('.urInputField').keyup(function(e){
  var val = $(this).val();
  var regexTest = /^\d{0,8}(\.\d{1,2})?$/;
  var ok = regexTest.test(val);
  if(ok) {
      $(this).css('background-color', 'green');
  } else {
      $(this).css('background-color', 'red');
  }
});

【讨论】:

    【解决方案2】:

    控件的id可能与你在asp.net源代码中输入的不同,例如当你使用父子控件或使用母版页时...,所以,你不能简单地使用document.getElementById。

    正如我所见,您的代码不仅仅是阻止非数字键,因为其他代码建议重复的解决方案,而且它还阻止退格键或箭头键,并限制小数点后的位数,以便只允许一位数字点之后。我不会更改您在代码中使用的这些自定义算法。

    此代码从事件参数中获取导致按键的源元素:

        <script type="text/javascript" language="javascript">
    
        function isNumberKey(event) {
            var e = event || window.event;
            var src = e.srcElement || e.target;
            var charCode = e.which || e.keyCode || e.charCode;
        //document.getElementById("label").value = src.id; //just for test/debug
    
            if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
                return false;
            else 
            {
                var input = src.value;
                var len = input.length;
                var index = input.indexOf('.');
    
                if (index > 0 && charCode == 46) return false;
    
                if (index > 0 || index == 0) {
                    var CharAfterdot = (len + 1) - index;
                    if (CharAfterdot > 2) return false;
                }
    
                if (charCode == 46 && input.split('.').length > 1) {
                    return false;
                }
    
            }
    
            return true;
        }
      </script>
    

    【讨论】:

    • 我不知道你对if (CharAfterdot &gt; 2) return false 有什么打算,因为它没有你可能需要的效果。你能解释一下输入文本需要哪些限制吗?
    【解决方案3】:

    使用此来源将适用于浮点数

    函数isNumber(evt) {

    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
    

    }

    感谢 Vamsi

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-24
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2015-11-26
      • 2017-11-22
      相关资源
      最近更新 更多