我的功能只工作一次

时间:2017-03-15 23:47:16

标签: javascript html css json validation

我的功能有问题。我想通过JSON数据进行登录表单验证。我的代码工作正常,但只有在刷新后才输入正确的数据。例如,当我输入错误的登录名/密码时,我收到错误,但在此之后,当我键入正确的登录名/密码时,没有任何反应。

如果你能提供帮助,我将非常感激。这是我的js代码:

//JSON validation
function validation(username, password){
    var alert = document.getElementById("invalid-data");
    data = JSON.parse(data);

    for (var i=0; i < data.length; i++) {
        if (username == data[i].login && password == data[i].password) {
            window.open("panel.html", "_self");
        } else {
            alert.style.display = "block";
        }
    }
}

//Form validation
function getLoginInfo() {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;

    validation(username, password);
}

var button = document.getElementById("login-button");
button.addEventListener("click", getLoginInfo);

2 个答案:

答案 0 :(得分:0)

所以,这个功能的问题是那个

data = JSON.parse(data);

在一个函数里面。我做到了全球化,一切正常。

答案 1 :(得分:0)

我希望您的问题是data = JSON.parse(data);,因为当您第一次获得解析数据时,会再次将其放入data,这会导致您的下一个data json解析出现问题。所以我认为如果你将解析后的data放入不同的变量,如下面的代码,你的问题就会解决:

//JSON validation
function validation(username, password){
var alert = document.getElementById("invalid-data");
var parsed_data = JSON.parse(data);

for (var i=0; i < parsed_data.length; i++) {
    if (username == parsed_data[i].login && password == parsed_data[i].password) {
        window.open("panel.html", "_self");
    } else {
        alert.style.display = "block";
    }
}
}
//Form validation
function getLoginInfo() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;

validation(username, password);
}

var button = document.getElementById("login-button");
button.addEventListener("click", getLoginInfo);