【问题标题】:Only allow number to be entered once in input只允许在输入中输入一次数字
【发布时间】:2013-08-05 15:14:04
【问题描述】:

有没有办法使用 javascript/jquery 来防止用户在输入框中输入两次相同的数字?用户可以输入任意数量的数字(一次一个),但如果他们再次尝试输入相同的数字,我需要提醒用户/采取其他措施。我试过创建一个数组:

 function history() {
 var numbers = [];
 numbers.push(document.getElementById('inputBox').value);
 }  

然后运行:

 var n = document.getElementById('inputBox').value;
 if ($.inArray(n, numbers)> -1) {
   // alert, do something
 }

但是新数组('numbers')永远不会被用户输入填充,所以 if 子句永远不会触发。

【问题讨论】:

    标签: javascript jquery arrays validation input


    【解决方案1】:

    大概是这样的吧?我假设您使用的是jQuery,因为您的代码中有$.inArray。

    var numbers = [];
    $('#inputBox').change(function () {
        if ($.inArray($(this).val(), numbers)) {
            // Alert the user/take other action
        } else {
            // Otherwise, add it to the array of numbers
            numbers.push($(this).val());
        }
    });
    

    如果有一个用户必须单击以添加新号码的按钮会更好。不然会很烦。

    【讨论】:

    • 这适用于一些小的变化 - $('#inputBox').keypress(function(event) { if(event.keyCode ==13) { if ($.inArray($(this).val(), numbers)> -1) { 如果没有 > -1 ,则在第一次输入数字时触发警报。现在好了。感谢您的帮助。
    【解决方案2】:

    看起来您的numbers 变量的作用域是history() 函数,因此正在设置的numbers 变量实例化只能由history() 函数访问。此代码将完成您在没有全局 numbers 变量的情况下尝试执行的操作,并通过拦截和取消键事件来防止输入任何重复的数字。

    $("#inputBox").on("keydown", function(e) {
        var numbers = $(this).val();
        var c = String.fromCharCode(e.keyCode);
        return ~numbers.indexOf(c);
    });
    

    【讨论】:

    • 感谢您的快速回复 - 但它仍然失败。如果我在 if 检查后立即运行 alert('' + names + ''),它是空的。
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多