【问题标题】:Javascript - Value not passing to functionJavascript - 值未传递给函数
【发布时间】:2012-02-10 16:53:09
【问题描述】:

所以我有这个表格:

<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 个错误。如果用户只输入一个用户名(第二次),那么用户名错误应该会消失,但它不会。如果我将它从函数中取出并用它们的正常值替换变量,那么它就可以正常工作。为什么放到这个函数里面会变?

【问题讨论】:

  • 顺便说一句,innerText 是一个仅限 IE 的属性 - 我会检查是否支持 textContent 并首先使用它(所有浏览器都支持它,除了 IE
  • 嗯,原来如此。适用于最新版本的 Chrome

标签: javascript html css forms validation


【解决方案1】:

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

【讨论】:

  • 啊,明白了。我把它放在我的 innerText='' 在我的 else 中,它适用于用户名但不适用于密码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 2015-02-06
  • 2012-03-10
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多