0

以下是 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 中无法正常工作。

4

3 回答 3

0

控件的 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>
于 2013-09-24T10:55:35.680 回答
0

使用此 Source 将适用于浮点数

函数 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;

}

谢谢万西

于 2014-07-14T09:01:31.680 回答
0

使用它会有所帮助....

$('.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');
  }
});
于 2013-09-24T10:39:04.620 回答