Javascript 比较两个表单电子邮件字段的值

Javascript 比较两个表单电子邮件字段的值,javascript,forms,Javascript,Forms,我创建了一个需要电子邮件验证的表单。所以用户必须输入他们的电子邮件地址两次,如果他们不匹配,他们将无法提交。我只是通过比较email字段1和2的值来实现这一点。如果它们匹配,“禁用”将从提交按钮中删除 当我将值设置为“插入您的电子邮件地址”和“再次确认您的电子邮件地址”时,一切都很顺利。但是,为了用户不必删除该文本,我删除了该值,并在HTML中使用了“占位符” 现在的问题是,当你键入任何东西时,它返回的都是真的。我猜它是将空白值看作是相同的,但是它并没有在用户键入时对值的变化进行拾取。 为什么这

我创建了一个需要电子邮件验证的表单。所以用户必须输入他们的电子邮件地址两次,如果他们不匹配,他们将无法提交。我只是通过比较email字段1和2的值来实现这一点。如果它们匹配,“禁用”将从提交按钮中删除

当我将值设置为“插入您的电子邮件地址”和“再次确认您的电子邮件地址”时,一切都很顺利。但是,为了用户不必删除该文本,我删除了该值,并在HTML中使用了“占位符”

现在的问题是,当你键入任何东西时,它返回的都是真的。我猜它是将空白值看作是相同的,但是它并没有在用户键入时对值的变化进行拾取。

为什么这两个字段总是作为匹配项返回

<html>
<body>
  <form class="theForm">
     <p> Subscribe to my mailing list</p>
     <input type="text" id="name" class="fields" name="name" placeholder="Name">
     <input type="text" id="email1" class="fields" name="email" placeholder="Email Address" >
     <input type="text" id="email2" class="fields" placeholder="Confirm Email Address" >
     <input name="submit" id="submit" class="fields" type="submit" disabled value="Email Addresses 
Do Not Match">
  </form>
<script>  
function verify (){

console.log(`email1.value: ${email1}: Email2: ${email2}`);

if(document.getElementById("email1").value === document.getElementById("email2").value) {

document.getElementById("submit").removeAttribute("disabled");
document.getElementById("submit").style.backgroundColor = "#004580";
document.getElementById("submit").style.cursor = "pointer";

} else {
document.getElementById("submit").setAttribute("disabled", "disabled");
}
}
$(".fields").on("change paste keyup", verify);
  </script>
</body>
</html>

订阅我的邮件列表

函数验证(){ log(`email1.value:${email1}:Email2:${Email2}`); if(document.getElementById(“email1”).value==document.getElementById(“email2”).value){ document.getElementById(“提交”).removeAttribute(“禁用”); document.getElementById(“提交”).style.backgroundColor=“#004580”; document.getElementById(“提交”).style.cursor=“指针”; }否则{ document.getElementById(“提交”).setAttribute(“禁用”、“禁用”); } } $(“.fields”)。打开(“更改粘贴键”,验证);
而不是:

$(".fields").on("change paste keyup", verify)
尝试:

编辑: 那么:

$("#email2").blur(verify)

而不是:

$(".fields").on("change paste keyup", verify)
尝试:

编辑: 那么:

$("#email2").blur(verify)
试试这个


订阅我的邮件列表

函数验证() { if(document.getElementById(“email1”).value==document.getElementById(“email2”).value){ 警报(“匹配”) }否则{ document.getElementById(“提交”).setAttribute(“禁用”、“禁用”); 警报(“不匹配”) } }
试试这个


订阅我的邮件列表

函数验证() { if(document.getElementById(“email1”).value==document.getElementById(“email2”).value){ 警报(“匹配”) }否则{ document.getElementById(“提交”).setAttribute(“禁用”、“禁用”); 警报(“不匹配”) } }
这种方式有效。您无法提交它。因此,删除“已禁用”的行出现“这是有效的。但是,即使按钮颜色和光标样式不匹配,它们仍然会更改,并且只有当它们匹配时才会更改。换句话说,在匹配之前按钮应该是灰色的。我已经对答案进行了编辑,让我知道这个是否有效:)那种有效。你不能提交它。因此,删除“禁用”的行似乎正在工作。但是,即使按钮颜色和光标样式不匹配,它们仍然会更改,并且只有当它们匹配时才会更改。换句话说,在匹配之前,按钮应该是灰色的。我已经对答案进行了编辑,请告诉我此选项是否有效:)