jQuery限制某些数字在Bootstrap输入中输入

时间:2014-02-23 09:50:13

标签: jquery key-bindings

好吧,我犯了一个错误并盲目地复制并粘贴了一个“代码片段”,该代码片段应该限制用户输入除了Bootstrap输入字段中的数字之外的任何其他ELSE。

盲目地这样做,我真的不明白它应该如何运作。现在我需要允许小数点,“。”打字,我不知道我需要改变什么。

有人可以解释下面的代码段或提供资源吗?

$('#elementXPosition,#elementYPosition,#elementWidth,#elementHeight').keypress(function(e) {
    var a = [];
    var k = e.which;

    for (i = 48; i < 58; i++)
        a.push(i);

    if (!(a.indexOf(k)>=0))
        e.preventDefault();

});

1 个答案:

答案 0 :(得分:3)

<强> Here is the solution I am able to create for you
有两种可能的解决方案,我更喜欢使用HTML的pattern功能。

**HTML**  
<input type="text" id="elementXPosition" pattern="[0-9.]+" title="Please enter decimal numbers only" placeholder="Using pattern" />
<input type="text" id="elementYPosition" placeholder="Using jQuery" />  

**jQuery**  
$(document).ready(function () {
    $("#elementYPosition").keydown(function (e) {
        /*To check if shift key was pressed*/
        if (e.shiftKey == true) {
            e.preventDefault();
        }
        /*Allows some keys to be pressed*/
        if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105) || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 37 || e.keyCode == 39 || e.keyCode == 46 || e.keyCode == 190) {} else {
            e.preventDefault();
        }
        /*This will allow the '.' to be pressed only once*/
        if ($(this).val().indexOf('.') !== -1 && e.keyCode == 190) e.preventDefault();

    });
});  

此处the list of key codes您可能需要根据自己的意愿编辑代码 希望它有所帮助。