2017-08-17 7 views
0

JSにはかなり新しく、ユーザーまたは任意の値がJavaScriptオブジェクトに実際に存在するかどうかを確認しようとしていますその目標はFirebaseでこれを実装して、そのユーザー名がすでに取得されている場合にユーザー登録を防止することですが、Im学習のためにローカルで最初にやっています。これは私がこれまで持っていたものです。入力要素(raw js)を使用してJavaScriptオブジェクトにユーザーが存在するかどうかをリアルタイムで確認する方法

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 
 
     } 
 
    }) 
 
}

私はinput要素イムに入力されたとき(valが)他の人はいないだろう、いくつかのキー/値のペアを一致しながら、それに問題があれば、他の両方のトリガー取得しているとそれから私は私が望むものではないどのようなユーザー名を入力しても使用できます。

どうすればこの問題を解決できますか?ありがとう。

答えて

1

ユーザー名が見つかったかどうかはチェックしていません。

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あなたが早期にループを終了させて​​いないと(あなたが一致するものを発見した場合)あなたが試合を見つけた後、すべてのユーザーをチェックする必要はありません。

関連する問題