Javascript - 值未传递给函数

标签 javascript html css forms validation

所以我有这个表格:

<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 个错误。如果用户仅输入用户名(第二次),则用户名错误应该消失,但事实并非如此。如果我将其从函数中取出并将变量替换为正常值,那么它就可以正常工作。为什么放入这个函数后会发生变化?

最佳答案

document.getElementById().innerText = '' 放在 else 中,而不是放在 if 中。因为你只在innerText为空时重置它,但如果它不为空你想重置tekst:

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

关于Javascript - 值未传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868310/

相关文章:

javascript - 页面重新加载后保持菜单切换状态

javascript - 如何使用搜索框中的搜索词从 ReactJS 中的多个 URL 获取 JSON 数据?

javascript - 在 Angular 中单击指令属性元素外部时将样式应用于元素

javascript - iOS - Parse 使用什么编程语言?

javascript - 编写二进制到十进制转换形式的程序 - 什么不适用于我的代码? (JavaScript 和 HTML5)

php - 如果值存在或等于 while 内的数组,则禁用按钮

jquery 选择与其他 ui 元素重叠

javascript - 如何在密集型任务中渲染 DOM 变化?

html - 如何使用 CSS3 在分页上单击时更改链接的颜色

javascript - 在Firebase中,是否可以在不指定子项值的情况下读取子项的数据?