jQuery文本框输入格式限制valueChange replace光标移动问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery文本框输入格式限制valueChange replace光标移动问题相关的知识,希望对你有一定的参考价值。

使用valueChange事件限制输入为数字,输入非数字replace掉,大概是这样:
<input type="text" id="id1" />
<script>
$('#id1).valueChange(function()
$(this).val($(this).replace(/^0-9./g, ""));

);

</script>
大概是这样,然后限制没什么问题,只能输入数字。删除的时候(按退格键或delete键),光标就会自动跑到第一个字母前面(最左边),不管在什么位置删除,都会自动跳到最左边,请问这有什么办法解决?
全部的约束是这样的:
$(this).val($(this).val().replace(/[^0-9.]/g,''));
$(this).val($(this).val().replace(".","$#$").replace(/\./g,"").replace("$#$","."));
if($(this).val().indexOf(".") != -1 && $(this).val().substring($(this).val().indexOf("."),$(this).val().length).length>3)
$(this).val($(this).val().substring(0,($(this).val().length)-1));

因为使用了替换,最好的办法是不要使用替换,在keypress时直接过滤。

给你一段我写的简单的封装成jquery插件的代码吧:

$.fn.bindIntTypeValidation=function()    
return this.keypress(function (e)     
var c = e.keyCode;    
return c >= 48 && c <= 57 || (c==45 && this.value=='');    
).bind('paste', function (e)     
var d = e.originalEvent && e.originalEvent.clipboardData || window.clipboardData;
    
return /^-?\\d*$/g.test(d.getData('text'));    
).css('ime-mode','disabled');    
;

使用方法:

$('#id1').bindIntTypeValidation();

追问

补充了全部的约束,可以实现我的所需吗?

追答

当然可以啊!

参考技术A valueChange改为keyup试试

用jQuery实现限制输入字数的文本框

1.导入外部.js文件:

 <script src="js/jquery-1.8.3.js" type="text/javascript"></script>

2.在<body>标签中加入如下代码:

<body>
        还可以输入<span id="word">140</span>个字<br />
       <textarea id="txt" name="" cols="" rows=""></textarea>
       <script language="javascript" type="text/javascript">
           $("#txt").keyup(function(){   
               if($("#txt").val().length > 140){
                   $("#txt").val( $("#txt").val().substring(0,140) );
               }
               $("#word").text( 140 - $("#txt").val().length ) ;
            });
       </script>
</body>

3.如果页面加载时输入框中有默认文本,那么要在页面加载时运行如下jQuery代码,方能正确显示:

$("#word").text( 140 - $("#txt").val().length ) ;

 

以上是关于jQuery文本框输入格式限制valueChange replace光标移动问题的主要内容,如果未能解决你的问题,请参考以下文章

前端jquery怎么限制文本框输入数字的大小

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

jQuery:限制文本框仅输入“数字”的最佳方法是啥? (允许小数点)

用jQuery实现限制输入字数的文本框

使用 jQuery 将文本框输入限制为给定的正则表达式

jQuery实现限制input框 textarea文本框输入字符数量的方法