JQUERY 一个文本框,限制只能输入百分比或者货币类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQUERY 一个文本框,限制只能输入百分比或者货币类型相关的知识,希望对你有一定的参考价值。

有个文本框, 要求只能输入百分比,最多2位小数,比如 12.34%
或者是货币类型,也是2位小数,比如 $ 12.34,
请问用正则表达式怎么写,最好有直接绑上文本框的js function

 <script type="text/javascript" src="js/jquery.1.8.3.min.js"></script>
 <script type="text/javascript">
    $(function() 
        //文本框只能输入数字(不包括小数),并屏蔽输入法和粘贴 
        $.fn.integer= function()  
            $(this).css("ime-mode", "disabled"); 
            this.bind("keypress",function(e)  
                var code = (e.keyCode ? e.keyCode : e.which); //兼容火狐 IE 
                if(!$.browser.msie&&(e.keyCode==0x8)) //火狐下不能使用退格键 
                return ; 
             
            return code >= 48 && code<= 57; 
        ); 
        this.bind("paste", function()  
        return false; 
    ); 
        this.bind("keyup", function()  
            if (/(^0+)/.test(this.value))  
                this.value = this.value.replace(/^0*/, \'\'); 
             
        ); 
    ; 

//文本框只能输入数字(包括小数),并屏蔽输入法和粘贴 
    $.fn.number= function()  
        $(this).css("ime-mode", "disabled"); 
        this.bind("keypress",function(e)  
            var code = (e.keyCode ? e.keyCode : e.which); //兼容火狐 IE 
            if(!$.browser.msie&&(e.keyCode==0x8)) //火狐下不能使用退格键 
                return ; 
             
            if(this.value.indexOf(".")==-1) 
                return (code >= 48 && code<= 57)||(code==46); 
            else 
                return code >= 48 && code<= 57 
             
        ); 
        this.bind("paste", function()  
        return false; 
    ); 
    this.bind("keyup", function()  
        if(this.value.slice(0,1) == ".") 
            this.value = ""; 
         
    ); 
    this.bind("blur",function() 
        if(this.value.slice(-1) == ".") 
            this.value = this.value.slice(0,this.value.length-1); 
         
    ); 
   ; 
); 
</script>
参考技术A function validate(value)
    if(value == null || value == "") return;
    var f = value.substring(0,1);
    if(f == "$") 
     var temp = value.substring(1,value.length);
     var result=temp.match(/^[0-9]+(.[0-9]1,2)$/); 
     if(result != null)
      alert("合法");
      return;
     
    
    
    var e = value.substring(value.length-1,value.length);
    if(e == "%") 
     var temp = value.substring(0,value.length-1);
     var result=temp.match(/^[0-9]+(.[0-9]1,2)$/); 
     if(result != null)
      alert("合法");
      return;
     
    
    alert("非法");
   


  <input type="text" id="query1" name="query1" onblur="validate(this.value)"/>

本回答被提问者和网友采纳
参考技术B <input type="text" onBlur="val(this);">
<script>
function val(s)
    var v = s.value;
    if('' == v)
        return alert('不能为空');
    
    if(!/^\\$+[0-9]+([.]1[0-9]1,2)?$/.test(v))
        alert('只能输入小数位数最多为两位的数字,并能以$开头');
        return s.value='';
    else
        return true;
    
    if(!/^[0-9]+([.]1[0-9]1,2)?%$/.test(v))
        alert('只能输入小数位数最多为两位的数字,并只能以%结尾');
        return s.value='';
    else
        return true;
    

</script>

文本框只能输入数字字母,屏蔽粘贴

对文本框进行输入限制,使得文本框只能输入(或不能输入)数字/字母/汉字等等。
操作方法很多,主要用到了正则表达式,onkeyup,onafterpaste。
在需求上可能不止这些情况,或者有交叉需求的情况,可以根据不同条件自行修改语句达到相应的效果,万变不离其宗。
-----------------------------------------------------------------------------------------------

只能输入数字(整数,屏蔽非法粘贴)
<input onkeyup="this.value=this.value.replace(/\D/g,‘‘)"onafterpaste="this.value=this.value.replace(/\D/g,‘‘)">
只能输入数字(可以有小数点)
<input  onkeyup="if(isNaN(value))execCommand(‘undo‘)"onafterpaste="if(isNaN(value))execCommand(‘undo‘)" />
 
只能输入数字(整数)
<input   onkeyup="JavaScript:this.value=this.value.replace(/\D/gi,‘‘)" />
只能输入字母和汉字(屏蔽非法粘贴)
<input onkeyup="value=value.replace(/[\d\.]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[\d\.]/g,‘‘))"/>
只能输入字母和数字(屏蔽非法粘贴)
<input onkeyup="value=value.replace(/[\W]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[\W]/g,‘‘))" />

 

小数点后只能有最多两位(数字,可以有正负号)
<input onkeyup="if(!/^[+-]*(\d)*(\.\d{0,2})*$/.test(value)) this.value=‘‘;"onafterpaste="if(!/^[+-]*(\d)*(\.\d{0,2})*$/.test(value)) this.value=‘‘;">

 

不能输入中文
<input onkeyup="value=value.replace(/[\u4E00-\u9FA5]/g,‘‘)"onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[\u4E00-\u9FA5]/g,‘‘))" />
不能输入全角标点符(可以有汉字)
<input onkeyup="value=value.replace(/[\uFF00-\uFFFF]/g,‘‘)"onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[\uFF00-\uFFFF]/g,‘‘))" />

by 小鬼PSer

以上是关于JQUERY 一个文本框,限制只能输入百分比或者货币类型的主要内容,如果未能解决你的问题,请参考以下文章

jQuery限制文本框只能输入正整数

Jquery 正则限制文本框只能输入数字(整数保留两位小数负数)

用Jquery控制文本框只能输入数字和字母

vb中,如何限制输入的文本框的内容只能是数字数或者字母?

jquery 验证文本框限制输入文字

如何限制文本框输入长度