【问题标题】:Check an array of values with jQuery使用 jQuery 检查值数组
【发布时间】:2013-10-23 11:00:46
【问题描述】:

您好,我正在尝试循环并检查具有特定值的数组。如果用户想要在输入中使用的值已经存在,则会显示一条消息,如果用户名是正确的并且是新的,它将被上传到我的 firebase!它适用于数组中的第一个元素,但如果我在循环中设置 .length 它需要所有但仍然发送假值?

<form id="">
    <label>Your username: </label><input type="text" id="userName">
</form>

<script src="text/javascript">
    var invalidUser=['value1','value2','value3','value4'];
    var myDataRef = new Firebase('https://leastflyingwasps.firebaseio.com/');

    $('#userName').keypress(function (e) {
        if (e.keyCode == 13) {
            var name = $('#userName').val();
            for (var i = 0;i<invalidUser;i++) {
            }

            if (invalidUser[i] === name) {
                alert('Not a valid username')
            }
            else {
                myDataRef.push({name: name});
            }
        }
    });
</script>

【问题讨论】:

  • 你的 for 循环在它开始后立即关闭
  • 你没有循环 invalidUser,你的代码在 for 循环之外。顺便说一句,做身份验证是 JavaScript 不是一个好主意,人们很容易阻止它。
  • 使用Ajax并验证server side中的用户名存在

标签: javascript jquery arrays firebase


【解决方案1】:

第一个问题是因为您的检查实际上是在 for 循环之外进行的。其次,您可以使用$.inArray() 来简化此操作:

var invalidUser = ['value1', 'value2', 'value3', 'value4'];

$('#userName').keypress(function (e) {
    if (e.keyCode == 13) {
        var name = $('#userName').val();

        if ($.inArray(name, invalidUser) != -1) {
            alert('Not a valid username')
        }
        else {
            var myDataRef = new Firebase('https://leastflyingwasps.firebaseio.com/');
            myDataRef.push({ name: name });
        }
    }
});

【讨论】:

  • $.inArray(name, invalidUser) != -1
  • 在此输入键上执行e.preventDefault() 也很重要,以避免它提交表单/单击链接/其他任何内容
  • 非常感谢您的帮助,比我想象的要容易!
猜你喜欢
  • 1970-01-01
  • 2019-08-02
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2021-05-24
相关资源
最近更新 更多