itz*_*run 17 javascript regex asp.net validation
使用此javascript限制用户只键入数字,只有一个点作为小数点分隔符.
<script type="text/javascript">
 function fun_AllowOnlyAmountAndDot(txt)
        {
            if(event.keyCode > 47 && event.keyCode < 58 || event.keyCode == 46)
            {
               var txtbx=document.getElementById(txt);
               var amount = document.getElementById(txt).value;
               var present=0;
               var count=0;
               if(amount.indexOf(".",present)||amount.indexOf(".",present+1));
               {
              // alert('0');
               }
              /*if(amount.length==2)
              {
                if(event.keyCode != 46)
                return false;
              }*/
               do
               {
               present=amount.indexOf(".",present);
               if(present!=-1)
                {
                 count++;
                 present++;
                 }
               }
               while(present!=-1);
               if(present==-1 && amount.length==0 && event.keyCode == 46)
               {
                    event.keyCode=0;
                    //alert("Wrong position of decimal point not  allowed !!");
                    return false;
               }
               if(count>=1 && event.keyCode == 46)
               {
                    event.keyCode=0;
                    //alert("Only one decimal point is allowed !!");
                    return false;
               }
               if(count==1)
               {
                var lastdigits=amount.substring(amount.indexOf(".")+1,amount.length);
                if(lastdigits.length>=2)
                            {
                              //alert("Two decimal places only allowed");
                              event.keyCode=0;
                              return false;
                              }
               }
                    return true;
            }
            else
            {
                    event.keyCode=0;
                    //alert("Only Numbers with dot allowed !!");
                    return false;
            }
        }
    </script>
<td align="right">
<asp:TextBox ID="txtQ1gTarget" runat="server" Width="30px" CssClass="txtbx" MaxLength="6" onkeypress="return fun_AllowOnlyAmountAndDot(this);"></asp:TextBox>
</td>
但onkeypress(this)事件在该位置返回该函数中的对象所需错误
var amount = document.getElementById(txt).value;
我的错在哪里?
jah*_*roy 41
这是使用正则表达式的好地方.
通过使用正则表达式,您可以只用一行替换所有代码.
您可以使用以下正则表达式来验证您的要求:
[0-9]*\.?[0-9]*
换句话说:零个或多个数字字符,后跟零个或一个句点,后跟零个或多个数字字符.
您可以使用以下代码替换代码:
function validate(s) {
    var rgx = /^[0-9]*\.?[0-9]*$/;
    return s.match(rgx);
}
该代码可以取代您的整个功能!
请注意,您必须使用反斜杠转义句点(否则它代表"任何字符").
有关使用javascript使用正则表达式的更多信息,请查看以下内容:
你也可以在这里测试上面的正则表达式:
上面使用的正则表达式的解释:
括号表示" 这些括号内的任何字符 ".您可以使用连字符(如上所示)来指示一系列字符.
的*意思是" 零个或多个先前的表达 ".
[0-9]*表示" 零个或多个数字 "
反斜杠用作句点的转义字符,因为句点通常代表" 任何字符".
的?意思是" 零或前一个字符中的一个."
该^代表字符串的开头.
的$表示字符串的结束.
启动正则表达式^并结束它$确保整个字符串遵循正则表达式模式.
希望这可以帮助!
nic*_*ist 16
请改用Jquery.在文本框中添加一个十进制类:
<input type="text" class="decimal" value="" />
在JS中使用此代码.它检查多个小数,并限制用户只键入数字.
$('.decimal').keyup(function(){
    var val = $(this).val();
    if(isNaN(val)){
         val = val.replace(/[^0-9\.]/g,'');
         if(val.split('.').length>2) 
             val =val.replace(/\.+$/,"");
    }
    $(this).val(val); 
});?
检查这个小提琴:http://jsfiddle.net/2YW8g/
希望能帮助到你.
小智 9
而不是使用这个:
onkeypress="return fun_AllowOnlyAmountAndDot(this);"
你应该用这个:
onkeypress="return fun_AllowOnlyAmountAndDot(this.id);"
小智 6
function isNumberKey(evt,id)
{
	try{
        var charCode = (evt.which) ? evt.which : event.keyCode;
  
        if(charCode==46){
            var txt=document.getElementById(id).value;
            if(!(txt.indexOf(".") > -1)){
	
                return true;
            }
        }
        if (charCode > 31 && (charCode < 48 || charCode > 57) )
            return false;
        return true;
	}catch(w){
		alert(w);
	}
}<html>
  <head>
  </head>
  <body>
    <INPUT id="txtChar" onkeypress="return isNumberKey(event,this.id)" type="text" name="txtChar">
  </body>
</html>小智 6
只需在输入文本中添加以下代码:
onkeypress='return event.charCode == 46 || (event.charCode >= 48 && event.charCode <= 57)'
小智 5
<input type="text" class="decimal" value="" />
$('.decimal').keypress(function(evt){
    return (/^[0-9]*\.?[0-9]*$/).test($(this).val()+evt.key);
});
我认为这个简单的解决方案可能是。
| 归档时间: | 
 | 
| 查看次数: | 93954 次 | 
| 最近记录: |