2016-01-06 34 views
2

我有两个电子邮件字段:email1 & email2。我希望他们两个是不同的。由于某些原因,我将email1保持为只读状态,并将email2保持为可编辑状态。下面是我的代码 -为什么这个jQuery验证错误地工作?

我的自定义验证如下 -

$.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时,它仍显示错误消息。请帮忙。

+2

我注意到2号输入没有'数据-VAL-邮件 - 不same'属性。这是打算? – Eon

+0

@Krohn是其打算。我希望email2与email1不同。因此,我做到了这一点 – Nevermore

回答

1

你缺少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(); 
+1

我不相信我犯了这个错误! T_T – Nevermore

+0

嗨Praveen ..你可以请看看这个太... http://stackoverflow.com/questions/34618703/why-is-tablesorter-plugin-not-displaying-results-according-to-input – Nevermore

+1

@Nevermore别担心,当然。会看看。 –

2

您正在使用ID(#email1和#email2)的jQuery选择器,但在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"> 
1

至于其他两个答案建议,你正在寻找的Id在你的选择器中。您可以添加Id或更改您的选择来查找name像这样: -

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