javascript - 文本输入 : Limit input to numbers (0-9) and the minus sign (-). 未按预期工作

标签 javascript html

我试图将文本字段中的键盘输入限制为数字 [0-9] 和减号 -(禁止复制/粘贴等)显然还有删除键。

该代码适用于限制数字和删除键,但不适用于减号 - 部分。

用户应该只能在号码前面输入减号 -,如果他们尝试输入 1,则输入 -它不应该输入 - 但现在 - 部分根本不起作用。

fiddle :http://jsfiddle.net/7XLqQ/1/

我认为这段代码是问题所在,但看起来不错。它检查文本输入是否为空,如果是,则输入减号 -

// Only enter the minus sign (-) if the user enters it first
if (unicode == 45 && input.value == "") {
    return true;
}

我的完整代码:

<input type="text" maxlength="10" id="myInput">

<script>
var input = document.getElementById("myInput");

input.onkeypress = function(e) {
   var unicode = e.keyCode;

    if (unicode == 49 || unicode == 50 || unicode == 51 || unicode == 52 || unicode == 53 || unicode == 54 || unicode == 55 || unicode == 56 || unicode == 57 || unicode == 48) {
        return true;
    } else {
        return false;   
    }

    // Only enter the minus sign (-) if the user enters it first
    if (unicode == 45 && input.value == "") {
        return true;
    }
};
</script>

最佳答案

我建议:

var input = document.getElementById("myInput");

input.onkeypress = function(e) {
    switch (e.keyCode){
        case 45:
            return this.value.length == 0 ? true : false;
            break;
        case 48:
        case 49:
        case 50:
        case 51:
        case 52:
        case 53:
        case 54:
        case 55:
        case 56:
        case 57:
            return true;
            break;
        default:
            return false;
            break;
    }
};

JS Fiddle demo .

您的原始代码失败的原因很简单,就是在评估 if 条件之前您已经从函数返回。在此版本中,如果按下 - 键,则如果没有当前值,三元数将返回 true(因此 - 将是第一个字符) ,或者 false 如果已经有一个值(因此 - 将不是第一个字符)。

关于javascript - 文本输入 : Limit input to numbers (0-9) and the minus sign (-). 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014054/

相关文章:

javascript - 根据跨度文本值增加字体大小

javascript - 获取具有相同数据属性的最后一个 div

javascript - 使用 Javascript 将 HTML 文本区域内容转换为字符数组

javascript - 更改图像 :hover 上的图像文件路径

javascript - 使用 ng-repeat 时如何计算行总数?

HTML 和 Flexbox 结构未按预期工作

Javascript - 当我单击连接到函数的此按钮时没有任何反应

html - FB 点赞页面打不开?

javascript - 碰撞检测问题还是我的逻辑

javascript - 嵌套可调整大小的元素