JavaScript无法正常运行

JavaScript无法正常运行,javascript,html,Javascript,Html,在用户能够单击submit按钮之前,我有这个js代码来验证注册。此功能通过密码字段中的onkeyup=“validatePassword()”激活。它要求用户在启用提交按钮之前填写所有必填字段。但是由于某种原因,函数无法识别if(pw.lenght

在用户能够单击submit按钮之前,我有这个js代码来验证注册。此功能通过密码字段中的
onkeyup=“validatePassword()”
激活。它要求用户在启用提交按钮之前填写所有必填字段。但是由于某种原因,函数无法识别
if(pw.lenght<6)
我在这里做错了什么

一些限制: 我没有在这里使用表单标签

函数validatePassword(){
var firstname=document.getElementById(“firstname”).value;
var username=document.getElementById(“用户名”).value;
var email=document.getElementById(“email”).value;
var pw=document.getElementById(“pw”).value;
var pwMsg=“”;
var msg=“请填写必填字段”;
控制台日志(pw.长度);
如果(pw.长度<6){
pwMsg=“密码应介于6到8个字符之间”;
document.getElementById(“pwMsg”).innerHTML=pwMsg;
document.getElementById(“寄存器btn”).disabled=true;
}否则{
document.getElementById(“注册btn”).disabled=false;
}
如果(firstname==“”){
document.getElementById(“firstname”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}否则{
document.getElementById(“注册btn”).disabled=false;
}
如果(用户名==“”){
document.getElementById(“用户名”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}否则{
document.getElementById(“注册btn”).disabled=false;
}
如果(电子邮件==“”){
document.getElementById(“email”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}否则{
document.getElementById(“注册btn”).disabled=false;
}
}

名字 姓 选择性别 男性 女性 性别 用户名 电子邮件 密码

有账户吗?登录

登记
代码的问题在于,您已将验证函数分离为单独的if-else语句。如中所示,您有单独的if-else语句来验证每个字段

另外,由于else语句中的每一个都在本质上影响同一个HTML元素,因此其他语句中的一个可以凌驾于另一个之上。我建议删除不必要的else语句,并将一些if语句更改为“else-if”语句

我建议的另一个更改是更改submit按钮的标记。将其从一个按钮更改为一个按钮(应与materialize一起使用)

函数validatePassword(){
var firstname=document.getElementById(“firstname”).value;
var username=document.getElementById(“用户名”).value;
var email=document.getElementById(“email”).value;
var pw=document.getElementById(“pw”).value;
var pwMsg=“”;
var msg=“请填写必填字段”;
如果(pw.长度<6){
pwMsg=“密码应介于6到8个字符之间”;
document.getElementById(“pwMsg”).innerHTML=pwMsg;
document.getElementById(“寄存器btn”).disabled=true;
控制台日志(“按钮禁用”)
}else if(firstname==“”){
document.getElementById(“firstname”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}否则如果(用户名==“”){
document.getElementById(“用户名”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}如果出现其他情况(电子邮件==“”){
document.getElementById(“email”).focus();
document.getElementById(“msg”).innerHTML=msg;
document.getElementById(“寄存器btn”).disabled=true;
}否则{
document.getElementById(“pwMsg”).innerHTML=“”;
document.getElementById(“注册btn”).disabled=false;
}
}

当pw.length<6时,它会识别。。。当pw.length>5…时,它不会删除消息。。。。添加
document.getElementById(“pwMsg”).innerHTML=''
在elseBut中,您知道为什么即使我设置为
.disabled
如果
pw.length<6
,注册btn也会被启用吗?因为您检查firstname是否有效,并使用name和email。。。。如果电子邮件有效(这是您最后一次检查),则该按钮将启用。。。i、 按钮的状态完全取决于电子邮件的有效性。。。您需要有一个变量,例如disabled=false。。。然后在每个if条件中设置disabled=true。。。不要在else中设置为false。。。有一个基本上不做document.getElementById(“register btn”).disabled=disabled的FINAL语句是的,我的FINAL语句太多了。谢谢你指出!是的,正如@jaromanda所指出的,我需要一份最终声明。以前我尝试过if-else语句,但没有成功,因此尝试将其分离。我猜我之前的if-else语句也没有正确地完成它。你的解决方案成功了!谢谢
function validatePassword(){
    var firstname = document.getElementById("firstname").value;
    var username = document.getElementById("username").value;
    var email = document.getElementById("email").value;
    var pw = document.getElementById("pw").value;
    var pwMsg = "";
    var msg = "Please fill in the required fields"; 

    if (pw.length < 6 ){
        pwMsg = "Password should be between 6 and 8 characters";
        document.getElementById("pwMsg").innerHTML = pwMsg;
        document.getElementById("register-btn").disabled = true;
        console.log("button disabled")
    } else if (firstname == ""){
        document.getElementById("firstname").focus();
        document.getElementById("msg").innerHTML = msg;
        document.getElementById("register-btn").disabled = true;
    } else if (username == ""){
        document.getElementById("username").focus();
        document.getElementById("msg").innerHTML = msg;
        document.getElementById("register-btn").disabled = true;
    }  else if (email == ""){
        document.getElementById("email").focus();
        document.getElementById("msg").innerHTML = msg;
        document.getElementById("register-btn").disabled = true;
    } else {
        document.getElementById("pwMsg").innerHTML = "";
        document.getElementById("register-btn").disabled = false;
    }
}