一个输入框:
<input type="text" id="intNum" />
仅限输入数字,比如数字可以为:123,-123,1.5,-1.5
这些都好说,不是太难,但是遇到这样的又如何处理?如:00005,-000000.5,45-12
贴下我写的,很烂乱入法眼莫乱,就忍忍吧!
$("#intNum").bind("keypress", function(event) {
var getValue = $(this).val();
//控制第一个不能输入小数点"."
if (getValue.length == 0 && event.which == 46) {
event.preventDefault();
return;
}
//控制只能输入一个小数点"."
if (getValue.indexOf('.') != -1 && event.which == 46) {
event.preventDefault();
return;
}
//控制只能输入一个负号"-"
if (getValue.indexOf('-') != -1 && event.which == 45) {
event.preventDefault();
return;
}
//控制只能输入的值
if (event.which && (event.which < 48 || event.which > 57) && event.which != 8 && event.which != 46 && event.which != 45) {
event.preventDefault();
return;
}
})
//失去焦点是触发
$("#intNum").bind("blur", function(event) {
var value = $(this).val();
if (/\.$/.test(value)) { // 最后一位为小数点去掉
value = value.replace(/\.$/, "");
}else if(/0+\./.test(value)){ // 小数去0
value =value.substr(0,1)!="-"?value.replace(/0+\./, "0."):value.replace(/0+\./, "0.");
}else if(/^0+/.test(value)){ // 正数去0
value = value.replace(/^0+/, "");
}
$(this).val(value);
})
现在遇到的问题就是这么处理45-56,这样的情况,因为我只限制输入一次“-”号,如果是“-5646”,这样没问题,问题就出在怎么确保第一个字符为“-”号!
还有就是代码写的不好,能优化则优化!求救大牛!!!!!
不知道是我没表达清楚还是怎么得,就是失去焦点的时候,得到的是这样的:比如:1最后显示1,-1最后显示-1,12.5最后显示12.5,-0.55最后显示-0.55,000006最后显示6,-00000056最后显示-56,00000000.78最后显示0.78,-0000000.456最后显示0.456,45-78最后显示-33,10-5最后显示5,15.最后显示15,23-最后显示23.....
以下是我想要的代码
这才是我想要的结果,谢谢@hsfzxjy和@司徒正美
function isValidNumber(str) {
return !isNaN(+str)
}
$("#intNum").bind("blur", function(event) {
var newValue="";
var getValue = $(this).val();
if(isValidNumber(getValue)){
newValue = +getValue;
}else if(newValue==""){
alert("输入的不为数字");
$(this).val("");
}
$(this).val(newValue);
})