我有一个4输入(甚至可以更多)的表单,用户可以放置一个数字或什么都不是。唯一的规则是,如果您在输入中输入数字,则如果在另一个输入中输入相同的数字(无重复),则无法提交数字。您可以根据需要提交尽可能多的空输入。基于长度比较两个数组:跳过空值
为了验证输入,我只用唯一值比较了具有相同数组的所有输入数组的长度。如果他们有相同的长度没关系。 我需要改进我的代码,因为现在只有当用户输入所有输入字段时才有效。如果某些输入为空,则它们在数组中被视为具有唯一值,因为它们都具有“”作为值。所以,如果用户只输入一个数字,我会得到数组长度为4,数组唯一为2,但它应该是1和1(跳过空白项)。
我在考虑在arr
上使用splice()
,但是这是做这种验证的最好方法吗? **编辑:我应用拼接,但如果数组是('1','','')我的代码给我('1',''),而不仅仅是(1),因为我期望... **这是因为拼接删除项目并更改数组长度,以便for循环指向错误的索引。 有什么想法? HTML:
<div class="sez-form">
<fieldset>
<legend>Messaggi inclusi</legend>
<div class="percheckbox">
<input class="checkseq" type="checkbox" value="1" name="messaggio[0]">
Prova di messaggio che scorre<br>
<label>Ordine: </label>
<input class="seq" type="text" name="ordine[0]" maxlength="2" size="2">
</div>
<div class="percheckbox">
<input class="checkseq" type="checkbox" value="3" name="messaggio[1]">
Titoli di film<br>
<label>Ordine: </label>
<input class="seq" type="text" name="ordine[1]" maxlength="2" size="2">
</div>
<div class="percheckbox">
<input class="checkseq" type="checkbox" value="6" name="messaggio[2]">
Prova a testo fisso<br>
<label>Ordine: </label>
<input class="seq" type="text" name="ordine[2]" maxlength="2" size="2">
</div>
<br style="clear: both;">
</fieldset>
</div>
JAVASCRIPT:
function uniqueArray(arr) {
return $.grep(arr,function(v,k) {
return $.inArray(v,arr) === k;
});
}
$(document).ready(function() {
$('#invia').click(function(e) {
e.preventDefault();
var arr = $(".seq").map(function(){ return $(this).val(); }).toArray();
var empty = $(".seq").filter(function() {
return this.value == "";
})
for (index = 0; index < arr.length; ++index) {
if (arr[index]=='') {
new_arr = arr.splice([index],1);
}
console.log(arr);
}
if(empty.length == $('.seq').length) {
alert('Non hai scelto alcun messaggio per il workflow. Correggi per procedere.');
}
else if(uniqueArray(arr).length != $('.seq').length) {
console.log(uniqueArray(arr));
alert('Ci sono voci duplicate nella sequenza. Correggi per procedere.');
}
else if($('#dt_from').val()=='__/__/____ __:__') {
alert('Scegli data e ora di inizio validit\u00E0 per il workflow');
}
else if($('#dt_to').val()=='__/__/____ __:__') {
alert('Scegli data e ora di fine validit\u00E0 per il workflow');
}
else {
ajaxSubmit();
}
});
});
If thisUniqueArray(['1','2','','','3','4','1']);是用户输入它应该给我isUniqueArray(['1','2','','3','4']);这是错误的',因为输入是7项,输出只有5(存在重复)。我想排序输入,在isUniqueArray(['1','2','3','4','1'))中更改它。即5项 – 2015-02-09 15:49:38
这是一个验证函数 - 根本不修改这些值。看来你想要一个功能,将排序,剥离空白_and_失败,如果有重复? – 2015-02-09 15:56:03
是的,现在我检查arr和arrUnique的长度......空白项目应该被跳过,因为我可以发布一个数组,甚至有一个值,两个空,但我不能将这个选项添加到我的代码 – 2015-02-09 15:58:24