2

我有一个文本字段,用户将在其中输入一个数字,我希望该数字是一个整数。为此,我想在用户键入小数点时忽略。

目前,我有一个 javascript 函数来检查 keyup 上的字段值,如果最近键入的字符是小数点,则将其删除。这会产生一种效果,用户键入小数点,它会出现,然后消失。有没有办法让小数点根本不显示?

4

4 回答 4

6

使用按键事件:

http://jsfiddle.net/wAJp7/1

$('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);
});
于 2013-06-04T17:57:26.320 回答
1

使用.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。

于 2013-06-04T17:59:40.600 回答
1
// don't do anything unless a number key is pressed
$("input").on("keypress", function(event) {
  if (event.which < 48 || event.which > 57) {
    event.preventDefault();
  }
});

这可能不是对用户最友好的解决方案——以某种方式将该字段标记为无效并要求他们更正它会更友好——但这将保证你得到一个整数。

JS Bin 演示

于 2013-06-04T18:06:04.993 回答
0

当数据包含小数点或任何其他符号或字母时,这将阻止用户提交数据。还有其他方法可以阻止用户甚至通过检查键码来输入这些字符,但我发现将两者结合起来更容易,因为有时我想要小数点,有时我不想要。

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 版本

于 2013-10-02T13:36:40.397 回答