当我点击提交按钮时,我试图阻止具有相同名称的输入上的重复值,但它不起作用,我不知道为什么......我需要一些帮助来理解为什么不起作用?非常感谢!
这是我的代码:
我尝试了一个我在这里找到的解决方案“输入更改”行为的解决方案,但它没有点击按钮...我的按钮:
<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;
}
});
我想显示提醒并阻止提交。非常感谢您的帮助!
问题是因为您将点击按钮的值与第一个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。
我可以解决它!这是代码...你可以添加一个按钮事件,如:
$('#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;
}
}
});