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光标移动问题的主要内容,如果未能解决你的问题,请参考以下文章