Javascript JS验证登录表单-我哪里出错了?

Javascript JS验证登录表单-我哪里出错了?,javascript,forms,validation,login,Javascript,Forms,Validation,Login,我有一颗坚果要啃,这让我头疼了一段时间 我是编程初学者,这是给大家介绍的。我尝试实现JS表单验证,即检查输入字段电子邮件和密码,如果它符合某些条件,则取消设置登录按钮上的禁用属性 我尝试了JS代码的组件,效果很好,但当我将其合并到函数validate()中时,它就不起作用了,我找不到原因 这是我的HTML: <!DOCTYPE html> <head> <meta charset='UTF-8' /> <title>$title</t

我有一颗坚果要啃,这让我头疼了一段时间

我是编程初学者,这是给大家介绍的。我尝试实现JS表单验证,即检查输入字段
电子邮件
密码
,如果它符合某些条件,则取消设置登录按钮上的
禁用属性

我尝试了JS代码的组件,效果很好,但当我将其合并到函数
validate()
中时,它就不起作用了,我找不到原因

这是我的HTML:

<!DOCTYPE html>
<head>
  <meta charset='UTF-8' />
  <title>$title</title>
  <link href='css/style.css' rel='stylesheet' type='text/css' />
  <script type='text/javascript' charset='utf-8' src='js/validateInput.js'></script>
</head>
<body>
  <div id='header'><h1>$title<h1></div>
  <form name='login' method='post' action=''>
    <table border='0'>
      <tr>
        <th>E-mail:</th>
        <td colspan='2'><input type='text' name='email' id='email' size='30' value='$posted_email'
     onkeyup='validate()' onclick='validate()' onchange='validate()' />
        </td>
      </tr>
      <tr>
        <th>Heslo:</th>
        <td><input type='password' name='pword' id='pword' size='21'
          onkeyup='validate()' onclick='validate()' onchange='validate()'/></td>
        <td><input type='submit' name='login' class='submit' id='loginBtn' value='OK' /></td>
      </tr>    
    </table>
  </form>
</body>

有什么想法吗?

问题出在这种情况下:

  if (!validateEmail(email.value)) {
    email.style.color = 'orange';
  } else if (pword.length > 0) {
    login.disabled = false;
  }
将函数validate()更改为以下内容:

function validate() {
    var login = $('#loginBtn');
    var email = $('#email');
    var pword = $('#pword');
    var result = false;

    if (!validateEmail(email.value)) {
        email.style.color = 'orange';
    } else {
        email.style.color = 'black';
        result = true;
    }
    if (result && pword.value.length > 0) {
        login.disabled = false;
    } else {
        login.disabled = true;
    }
}


希望这能有所帮助。

如果表单验证只是您需要的,那么您可以使用HTML5 Form Validation@defau1t,谢谢您的建议,但据我所知,
required
属性没有被广泛采用(主要是IE),也不够标准化。此外,我希望我的表单更加用户友好,这样它将在用户键入时与用户交互,而不仅仅是在提交后。但html5
required
可能是一个很好的后备方案,如果用户禁用了JS,尽管它永远不会完全替代服务器端验证。同意,回答您的问题。您是否从php中提取任何值?什么是$title和$posted_电子邮件form@defau1t
$title
$posted\u email
是我用PHP在html代码中插入的唯一两个值
$title
是页面的标题和页眉
($title='login')
$posted\u email
是空字符串,或者如果用户单击submit按钮但未能登录,则它包含以前提交的电子邮件值
($posted\u email=isset($\u POST('email'))?$\u POST('email'):'')
,谢谢,这很有魅力。我还有一个浏览器表单自动填充的问题,它不会触发任何事件,并且登录按钮保持禁用状态。我跟着,现在没事了。再次感谢你!
function validate() {
    var login = $('#loginBtn');
    var email = $('#email');
    var pword = $('#pword');
    var result = false;

    if (!validateEmail(email.value)) {
        email.style.color = 'orange';
    } else {
        email.style.color = 'black';
        result = true;
    }
    if (result && pword.value.length > 0) {
        login.disabled = false;
    } else {
        login.disabled = true;
    }
}