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