验证以防止输入文本中的值重复

时间:2019-02-07 10:38:24

标签: javascript jquery html5 frontend

当我单击提交按钮时,我试图防止输入相同名称的值重复,但是它不起作用,我不确定为什么... 我需要一些帮助,以了解为什么不起作用? 提前谢谢!

这是我的代码:

我尝试了一种在这里发现它可以“按输入更改”的方式工作的解决方案,但是在单击按钮时却没有效果... 我的按钮:

<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;
    }
});

我想显示警报并阻止提交。 非常感谢您的帮助!

2 个答案:

答案 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;
                }
                }
 });