繁体   English   中英

如何通过输入元素(原始js)实时检查用户是否存在于JavaScript对象中

[英]How to check in real time if a user exists in a JavaScript object through an input element (raw js)

我是JS的新手,正在尝试实时检查JavaScript对象中是否存在用户或任何值,目标是在Firebase中实现此目的,以防止在用户名已被使用的情况下阻止用户注册,但是我首先要在本地进行操作,因为我正在学习。 到目前为止,这就是我所拥有的。

 let input = document.getElementById('input') let btn = document.getElementById('btn') btn.disabled = false let users = [ { uname: "mark" }, { uname: "sarah" }, { ...others uname } ] input.addEventListener('input', () => { input.value = input.value.replace(regex, "") check(input.value) }) function check(val) { users.forEach((item) => { let uname = item.uname if (uname.indexOf(val) > -1 && uname === val) { console.log('That user name has been taken') btn.disabled = true } else { console.log('Ok') btn.disabled = false } }) } 

问题是当我输入输入元素Im时,同时触发了if和else,而while(val)匹配了一些键/值对,而其他键则不匹配,然后我可以使用输入的用户名Im我想要的是。

我该如何解决? 谢谢。

您无需检查是否已找到用户名。

function isUsernameAvailable (val) {
    for (var i = 0; i < users.length; i++) {
        var uname = users[i].name;

        if (uname === val) {
            console.log('That user name has been taken')
            btn.disabled = true

            return false; // the username is taken, we can stop checking
        }
    }

    console.log('Ok')
    btn.disabled = false

    return true;
}

另外, forEach不允许您提早退出循环,并且您无需在找到匹配项后检查每个用户(如果找到匹配项)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM