EDIT2:jQuery的验证某些输入必须是彼此不同
我觉得我的解附近。继vicgoyso的建议,我创建了一些对象从我的输入(而不是数组),然后我进行了比较:see the jsfiddle
因为这个比较工作:comparison on jsfiddle我希望上面的代码,以及工作,但事实并非如此。
编辑: jQuery的方法,我正在与此类似:
$().ready(function(){
$.validator.addMethod("same_names", function(value, element) {
if (!$('#surname').val() || $('#surname').val() != null
&& !$('#surname1').val() || $('#surname1').val() != null){
return $('#name').val() != $('#name1').val()
&& $('#surname').val() != $('#surname1').val()
&& $('#nickname').val() != $('#nickname1').val()
}
}, " Your input is equal to another");
$("#myForm").validate({
rules: {
name: {
required: false,
same_names: true
},
name1: {
required: false,
same_names: true
},
surname: {
required: false,
same_names: true
},
surname1: {
required: false,
same_names: true
},
nickname: {
required: false,
same_names: true
},
nickname1: {
required: false,
same_names: true
},
},
messages: {
...
}
})
});
它继续说名字,姓氏和昵称是必需的,而他们没有。 没有jQuery的我的方法与此类似:
$('#myForm').submit(function (event) {
var errors = false;
if ($('#name').val() == $('#name1').val() &&
$('#surname').val() == $('#surname1').val() &&
$('#nickname').val() == $('#nickname1').val()
||
$('#name').val() == $('#name2').val() &&
$('#surname').val() == $('#surname2').val() &&
$('#nickname').val() == $('#nickname2').val()
||
$('#name').val() == $('#name3').val() &&
$('#surname').val() == $('#surname3').val() &&
$('#nickname').val() == $('#nickname3').val()
||
$('#name').val() == $('#name4').val() &&
$('#surname').val() == $('#surname4').val() &&
$('#nickname').val() == $('#nickname4').val()
....
||
$('#name').val() == $('#name10').val() &&
$('#surname').val() == $('#surname10').val() &&
$('#nickname').val() == $('#nickname10').val()
||
$('#name1').val() == $('#name2').val() &&
$('#surname1').val() == $('#surname2').val() &&
$('#nickname1').val() == $('#nickname2').val()
||
$('#name1').val() == $('#name3').val() &&
$('#surname1').val() == $('#surname3').val() &&
$('#nickname1').val() == $('#nickname3').val()
.... and so on
) {
$("#error").show();
location.href = "#";
location.href = "#error";
errors = true;
} else {
errors = false;
$("#error").hide();
}
if (errors == true) {
event.preventDefault();
}
});
(有10个输入组,由名+姓+昵称形成)我实际的JSP与此类似:
<form id="myForm" method="post">
<input id="name" name="name" />
<input id="surname" name="surname" />
<input id="nickname" name="nickname" />
<br/ >
<input id="name1" name="name1" />
<input id="surname1" name="surname1" />
<input id="nickname1" name="nickname1" />
<br/>
<input id="name2" name="name2" />
<input id="surname2" name="surname2" />
<input id="nickname2" name="nickname2" />
<br />
<input id="name3" name="name3" />
<input id="surname3" name="surname3" />
<input id="nickname3" name="nickname3" />
<br />
<br />
<input id="submit" type="submit" value="submit" />
</form>
我想是一个错误只是如果此组(姓名,昵称)中的一个与另一个相等,例如,这是一个错误:
- 约翰
- 史密斯
- 王子 *
- 约翰
- 史密斯
- 王子 *
- 约翰
- 史密斯
- 雪人
但是这个人是不是:
- 约翰
- 史密斯
- 王子至少一个场是不同的,因此该输入是细
- 约翰
- 史密斯
- 雪人 *至少一个场是不同的所以输入很好
- 约翰
- 史密斯
- 火球至少一个领域是不同的,因此输入的是精
问题 如果我想使用此代码:
https://stackoverflow.com/a/16965721/4477899
要在这里解决这个问题:
Form validate some input must be different from each other
我在问,因为我已经在使用jQuery验证,如果字段超过两个组,或者是空的(这些字段不是必需的),以前的方法不能很好地工作。
请向我们展示一些迄今为止已经尝试过的代码。一个最小,完整和可验证的例子就足够了。 – wiredolphin