我试图为2组字段编写验证。我有6个输入,3个用于文本名称,3个用于id号...验证应该这样做“如果输入name="RE_SignedByID"
有一个输入类型name="RE_SignedByName"
,那么其他输入name="RE_SignedByID"
,不应该包含相同的name="RE_SignedByName"
更简单的解释...一个ID号码应该只有一个人名(Id号码对于一个人名称是唯一的。)我可以使用什么?我应该映射()所有输入吗?这些是我的输入:
<div id="signedBy" class="clearfix">
<label>Signer, person ID & name</label>
<span id="signedByID" class="ids half">
<input type="text" name="RE_SignedByID" placeholder="personID, person1" data-validate="" tabindex="101" required>
<input type="text" name="RE_SignedByID" placeholder="personID, person2" data-validate="" tabindex="103">
<input type="text" name="RE_SignedByID" placeholder="personID, person3" data-validate="" tabindex="105">
</span>
<span class="names half">
<input type="text" name="RE_SignedByName" placeholder="name, person1" tabindex="102" required>
<input type="text" name="RE_SignedByName" placeholder="name, person2" tabindex="104">
<input type="text" name="RE_SignedByName" placeholder="name, person3" tabindex="106">
</span>
</div>
我想它也应该是一个“改变”功能?或者我可以点击进行验证吗?一些想法......?我实际上是在这里迷失了...在此先感谢!!!
也许为它们中的所有3个使用不同的类名来使它们独一无二?
<input class="name1">
<input class="name2">
<input class="name3">
我不确定你的意思但是如果你想让输入类型独特而且在你写class =“names half”时不要全部调用它们,那么你应该给它们所有唯一的类名。
因此,根据我的理解,您不希望多个字段具有相同的值。我的方法是:
let inputTimeout = null; //set an empty timeout object
let vars = [null, null, null, null]; // create an array containing as many nulls as you have inputs
$('.nameInput').on('keyup', function(){
let self = $(this);
clearTimeout(inputTimeout); //clear the timeout
inputTimeout = setTimeout(function(){ //set a timeout to check whether there is a dupe after the user has stopped typing
if (vars.indexOf(self.val()) == -1){ //check if the vals array contains the newly entered string
vars[self.attr('data-inputnum')] = self.val(); //insert the value into the array
}else{
//handle duplicates here
}
}, 500); //500ms is a sensible value for end of user input, change it if users complain that your app is too fast/slow
});
然后,您只需编辑一下HTML,以便所有名称输入都有一个共同的类(我使用.nameInput)并且有一个data-inputnum attr。这看起来像这样:
<input type="text" name="RE_SignedByName" placeholder="name, person1" tabindex="102" class='nameInput' data-whichinput='0'/>
<input type="text" name="RE_SignedByName" placeholder="name, person2" tabindex="103" class='nameInput' data-whichinput='1'/>
<!--and so on-->
当然,不要单独依赖JavaScript验证,也要在后端内部进行检查。然而,这将超出这个答案的范围。
嗨感谢大家的帮助,让我意识到了一些事情,直到得到答案。这是我的工作代码:
var valSignedID = $("[name=SignedByID]").map(function() {
return this.value.trim();
}).get();
var valOwnersID = $("[name=OwnersID]").map(function() {
return this.value.trim();
}).get();
valSignedID.sort();
valOwnersID.sort();
for (var i = 0; i < valSignedID.length - 1; i++) {
if (valSignedID[i] == valSignedID[i + 1] && valSignedID[i] != "") {
alert(" You can not have duplicated signers ID's");
return false;
// break;
}
}
for (var i = 0; i < valSingedName.length; i++) {
if (valSingedName[i] == valSingedName[i + 1] && valSingedName[i] != "") {
alert(valSingedName[i] + " should not have different ID");
//return false;
}
}