当我单击提交按钮时,我试图防止输入相同名称的值重复,但是它不起作用,我不确定为什么... 我需要一些帮助,以了解为什么不起作用? 提前谢谢!
这是我的代码:
我尝试了一种在这里发现它可以“按输入更改”的方式工作的解决方案,但是在单击按钮时却没有效果... 我的按钮:
<button type="button" id="approve" class="positive valid" tabindex="-1">Approve</button>
和我的jQuery
$('#received').on('click',function() {
var $current = $(this);
if ($('input[name^="RE_SignedByID"]').val() == $current.val() && $('input[name^="RE_SignedByID"]').attr('tabindex') !== $current.attr('tabindex') ) {
alert('You can not have duplicated ID´s');
return false;
}else {
return true;
}
});
我想显示警报并阻止提交。 非常感谢您的帮助!
答案 0 :(得分:0)
问题是因为您正在将点击按钮的值与第一个input[name^="RE_SignedByID"]
元素进行比较。
要解决此问题,您可以改用input[name^="RE_SignedByID"]
创建一个包含所有map()
值的数组。然后,您可以对该列表进行重复数据删除并比较结果数组的长度。如果它们不同,则存在重复项。试试这个:
$('#received').on('click', function(e) {
var values = $('input[name^="RE_SignedByID"]').map(function() {
return this.value.trim();
}).get();
var unique = [...new Set(values)];
if (values.length != unique.length) {
e.preventDefault();
alert('You can not have duplicated ID\'s');
}
});
请注意,[...new Set(values)]
在IE中不起作用。如果您需要支持旧版浏览器,则有很多替代方法可以对阵列进行重复数据删除。有关更多信息,请参见this answer。
答案 1 :(得分:0)
我可以解决它!这是代码...您可以添加按钮事件,例如:
$('#submit').on('click', function () {
var values = $('[name=RE_SignedByID]').map(function() {
return this.value.trim();
}).get();
var values2= $('[name=RE_OwnersID]').map(function() {
return this.value.trim();
}).get();
values.sort();
values2.sort();
for (var i = 0; i < values.length-1; i++) {
if( values[i] == values[i+1] && values[i] !=""){
showAlert(translator.getTranslation(' You can not have duplicated signers ID\'s'));
return false;
// break;
}
}
for (var i = 0; i < values2.length-1; i++) {
if( values2[i] == values2[i+1] && values2[i] !=""){
showAlert(translator.getTranslation(' You can not have duplicated owners ID\'s'));
return false;
// break;
}
}
});