Javascript - значение не передается функции - PullRequest
2 голосов
/ 15 января 2012

Итак, у меня есть эта форма:

<form name="login" id="login" action="" method="POST" onSubmit="return test()">
        <input type="text" size="10" name="username" /><div id="wrongUser"></div>
            <br />
        <input type="password" size="10" name="password" /><div id="wrongPass"></div>
            <br />
    <input type="submit" value="submit" name="submit" /><br /><br />
</form>

и эти две функции:

function test()
{
    var user = document.login.username.value;
    var pass = document.login.password.value;
    if((user == "" || user == null) && (pass == "" || pass == null))
    {
        document.getElementById('wrongUser').innerText = "Please Enter Username";
        document.getElementById('wrongPass').innerText = "Please Enter Password";
        return false;
    }

    if(checkEmpty(user, 'wrongUser', "Please Enter Username"))
        return false

    if(checkEmpty(pass, 'wrongPass', "Please Enter Password"))
        return false;

    return true;
}

function checkEmpty(name, id, output)
{
    if(name == "" || name == null)
    {
        document.getElementById(id).innerText = "";
        document.getElementById(id).innerText = output;
        return true;
    }
    else
        return false;
}

Теперь эти функции вроде работают, но не так, как я думаю.Если пользователь только ничего не вводит (первый раз), он получает 2 ошибки.Если пользователь вводит только имя пользователя (второй раз), то ошибка имени пользователя должна исчезнуть, но это не так.Если я возьму его из функции и заменю переменные их нормальными значениями, то все будет работать нормально.Почему это изменилось бы, если включить эту функцию?

1 Ответ

3 голосов
/ 15 января 2012

Поместите document.getElementById().innerText = '' в остальное, а не в if.Поскольку вы сбрасываете внутренний текст только тогда, когда он пуст, но вы хотите сбросить текст, если он не пустой:

function checkEmpty( name, id, output ) {
  var elem = document.getElementById(id); // it's faster to put the element in a var

  if( name === undefined || name == '' name == null )
    elem.innerText = output;
    return true;
  else
    elem.innerText = '';
    return false;
}
...