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