文本框只能输入数字和小数点,且小数点后只允许两位数字
根据功能要求,第一次开始了解及着手整理写写文本框text的相关特性,在网上找了很多例子,根据功能需要,整理了一下,主要功能:
1.文本框只能输入数字和小数点,且小数点后只允许两位数字
2.输入的数字有最大、最小值,当输入值小于最小值时,文本框清空,当输入值大于最大值时,清除最后一个字符
3.如果文本框输入的是金额,当光标离开时,默认显示小数点后两位
以下是相关代码(需要引用jquery库哈)
常规:<input id="TxtNormal" type="text" value=""/><br/>
禁止粘贴复制:<input id="TxtCopy" type="text" name="city" value="" oncopy="return false" oncut="return false" /><br/>
输入结束后默认显示小数点两位:<input id="TxtTwo" type="text" name="city" value=""/>
<script type="text/javascript">
$(function(){
$("#TxtNormal").keyup(function(){
var min=0;
var max=200;
amount(this,min,max);
$(this).bind("paste", function() {
return false;
});
});
$("#TxtCopy").keyup(function(){
var min=0;
var max=200;
amount(this,min,max);
$(this).bind("paste", function() {
return false;
});
});
$("#TxtTwo").keyup(function(){
var min=0;
var max=300;
amount(this,min,max);
});
$("#TxtTwo").blur(function(){
overFormat(this);
});
});
/**
* 实时动态强制更改用户录入
* arg1 inputObject
**/
function amount(th,min,max){
oncopy="return false;";
oncut="return false;";
onpaste="return false" ;
var regStrs = [
['^0(\\d+)$', '0'], //禁止录入整数部分两位以上,但首位为0
['[^\\d\\.]+$', ''], //禁止录入任何非数字和点
['\\.(\\d?)\\.+', '.$1'], //禁止录入两个以上的点
['^(\\d+\\.\\d{2}).+', '$1'] //禁止录入小数点后两位以上
];
for(i=0; i<regStrs.length; i++){
var reg = new RegExp(regStrs[i][0]);
th.value = th.value.replace(reg, regStrs[i][1]);
}
var getValue = $(th).val();
var min=min;
var max=max;
if(parseInt(getValue)<min||parseInt(getValue)>max){
getValue = $(th).val(getValue.substring(0,getValue.length-1));
return;
}
$(th).bind("paste", function() {
return false;
});
}
/**
* 录入完成后,输入模式失去焦点后对录入进行判断并强制更改,并对小数点进行0补全
* arg1 inputObject
* 这个函数写得很傻,是我很早以前写的了,没有进行优化,但功能十分齐全,你尝试着使用
* 其实有一种可以更快速的JavaScript内置函数可以提取杂乱数据中的数字:
* parseFloat('10');
**/
function overFormat(th){
var v = th.value;
if(v === ''){
v = '0.00';
}else if(v === '0'){
v = '0.00';
}else if(v === '0.'){
v = '0.00';
}else if(/^0+\d+\.?\d*.*$/.test(v)){
v = v.replace(/^0+(\d+\.?\d*).*$/, '$1');
v = inp.getRightPriceFormat(v).val;
}else if(/^0\.\d$/.test(v)){
v = v + '0';
}else if(!/^\d+\.\d{2}$/.test(v)){
if(/^\d+\.\d{2}.+/.test(v)){
v = v.replace(/^(\d+\.\d{2}).*$/, '$1');
}else if(/^\d+$/.test(v)){
v = v + '.00';
}else if(/^\d+\.$/.test(v)){
v = v + '00';
}else if(/^\d+\.\d$/.test(v)){
v = v + '0';
}else if(/^[^\d]+\d+\.?\d*$/.test(v)){
v = v.replace(/^[^\d]+(\d+\.?\d*)$/, '$1');
}else if(/\d+/.test(v)){
v = v.replace(/^[^\d]*(\d+\.?\d*).*$/, '$1');
ty = false;
}else if(/^0+\d+\.?\d*$/.test(v)){
v = v.replace(/^0+(\d+\.?\d*)$/, '$1');
ty = false;
}else{
v = '0.00';
}
}
th.value = v;
}
</script>

浙公网安备 33010602011771号