我正在尝试为两组字段编写验证。我有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>
我猜它也应该是“不断变化”的功能吗?还是可以点击进行验证?一些想法...?我实际上是在这里败北... 提前致谢!!!
答案 0 :(得分:0)
也许对所有3个类使用不同的类名以使其唯一?
<input class="name1">
<input class="name2">
<input class="name3">
我不确定您的意思是什么,但是如果您想使输入类型唯一,并且在编写class =“ names half”时不全部调用它们,那么您应该给它们提供所有唯一的类名。
答案 1 :(得分:0)
因此,根据我的理解,您不希望多个字段具有相同的值。 我的方法是这样:
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验证,也要始终检查后端内部。但是,这超出了此答案的范围。
答案 2 :(得分:0)
嗨,谢谢大家的帮助,直到我得到答案之前,我才意识到了两件事。这是我的工作代码:
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;
}
}