我有一个文本字段,用户将在其中输入一个数字,我希望该数字是一个整数。为此,我想在用户键入小数点时忽略。
目前,我有一个 javascript 函数来检查 keyup 上的字段值,如果最近键入的字符是小数点,则将其删除。这会产生一种效果,用户键入小数点,它会出现,然后消失。有没有办法让小数点根本不显示?
我有一个文本字段,用户将在其中输入一个数字,我希望该数字是一个整数。为此,我想在用户键入小数点时忽略。
目前,我有一个 javascript 函数来检查 keyup 上的字段值,如果最近键入的字符是小数点,则将其删除。这会产生一种效果,用户键入小数点,它会出现,然后消失。有没有办法让小数点根本不显示?
使用按键事件:
$('input').on('keyup', function (e) {
if (e.which === 46) return false;
}).on('input', function () {
var self = this;
setTimeout(function () {
if (self.value.indexOf('.') != -1) self.value = parseInt(self.value, 10);
}, 0);
});
使用.keydown()
该检查键被按下的功能。如果是 ".", preventDefault()
.
$('input').keydown(function(e){
var kCode = (e.which || e.keyCode)
if(kCode == 190 || kCode == 110) return false;
if(e.which === 86 && (e.ctrlKey || e.metaKey)) return false;
})
小提琴:http: //jsfiddle.net/PsqhJ/1/
编辑:添加阻止用户到 ctr+v。
// don't do anything unless a number key is pressed
$("input").on("keypress", function(event) {
if (event.which < 48 || event.which > 57) {
event.preventDefault();
}
});
这可能不是对用户最友好的解决方案——以某种方式将该字段标记为无效并要求他们更正它会更友好——但这将保证你得到一个整数。
当数据包含小数点或任何其他符号或字母时,这将阻止用户提交数据。还有其他方法可以阻止用户甚至通过检查键码来输入这些字符,但我发现将两者结合起来更容易,因为有时我想要小数点,有时我不想要。
Javascript:
function NoDecimal(o)
{
if (o.value.length > 0)
{
var objReg = /^\d{0,10}?$/;
if (objReg.test(o.value))
{
o.style.borderColor='';
o.style.fontWeight='normal';
document.getElementById('submit').disabled = false;
}
else
{
o.style.borderColor='red';
o.style.fontWeight='bold';
document.getElementById('submit').disabled=true;
}
return false;
}
}
HTML:
Number: <input type="text" onkeyup="NoDecimal(this);">
您还可以使用 onkeyup、onkeydown、onkeypress 和 oninput,但旧版浏览器不会将 oninput 作为 html5 的一部分来处理。特别是早期的 Internet Explorer 版本