为什么这个jQuery验证工作错误

Why is this jQuery validate working wrongly?

本文关键字:工作 错误 验证 jQuery 为什么      更新时间:2023-09-26

我有两个电子邮件字段:email1&email2.我希望两者都不同。出于某些原因,我将email1保持为只读,将email2保持为可编辑。下面是我的代码-

我的自定义验证器如下-

$.validator.addMethod("email_not_same", function(value, element) {
  return $('#email1').val() != $('#email2').val();
}, "Both emails should not be same");  

我的规则如下-

 email1: {
    required: true,
    email: true,
  },
  email2: {
    email: true,
    email_not_same: true,
  },

我的html代码如下:

<div class="form-group col-md-12">
    <label><strong>Emails : </strong></label>
</div>
<div class="form-group col-md-6">
    <input class="form-control" name="email1" placeholder="Email 1" type="email">
</div>
<div class="form-group col-md-6">
    <input class="form-control" name="email2" placeholder="Email 2" type="email">
</div>

当我输入两个相同的电子邮件地址时;它根据我的规则显示消息。然而,在那之后,当我更改电子邮件2时,它仍然显示错误消息。请帮忙。

您正在使用jQuery选择器作为ID(#email1和#email2),但在HTML中没有指定ID属性,而是指定了"name"。添加id属性,然后重试。

<input class="form-control" id="email1" name="email1" placeholder="Email 1" type="email">
<input class="form-control" id="email2" name="email2" placeholder="Email 2" type="email">

您缺少电子邮件的id属性:

<input class="form-control" id="email1" name="email1" placeholder="Email 1" type="email" />
<input class="form-control" id="email2" name="email2" placeholder="Email 2" type="email" />

但你在这里使用它们:

return $('#email1').val() != $('#email2').val();

正如其他两个答案所建议的那样,您正在选择器中查找Id。您可以添加Id或更改选择器以查找name,如下所示:-

$.validator.addMethod("email_not_same", function(value, element) {
  return $('[name="email1"]').val() != $('[name="email2"]').val();
}, "Both emails should not be same");