在插入新记录之前重复签入javascript

在插入新记录之前重复签入javascript,javascript,jquery,Javascript,Jquery,我有一个javascript,只需点击一个按钮,它就可以将一个类似22222222的字符串附加到另一个字段(该字段要么为空,要么已经有类似22222233333333333的数字)。实际上是手机的15位IMEI。用户可以选择提交单个IMEI或批量IMEI。当按下myVar1中的按钮将多个IMEI添加到批量字段时,新IMEI将插入到批量字段(myVar2)中前一个IMEI的下方 目前,我正在使用下面的脚本来做这件事,它的工作非常好。问题是它在追加之前不会检查重复项 function append_

我有一个javascript,只需点击一个按钮,它就可以将一个类似22222222的字符串附加到另一个字段(该字段要么为空,要么已经有类似22222233333333333的数字)。实际上是手机的15位IMEI。用户可以选择提交单个IMEI或批量IMEI。当按下myVar1中的按钮将多个IMEI添加到批量字段时,新IMEI将插入到批量字段(myVar2)中前一个IMEI的下方

目前,我正在使用下面的脚本来做这件事,它的工作非常好。问题是它在追加之前不会检查重复项

function append_myVar1_to_myVar2(){
var myVar1 = document.getElementById('myVar1_value').value;
var myVar2 = document.getElementById('myVar2_value').value;

    if(document.getElementById('myVar2_value').value == ''){
        document.getElementById('myVar2_value').value = myVar1; 
    }else{
        document.getElementById('myVar2_value').value = document.getElementById('myVar2_value').value + "\r\n" + myVar1; 
    }
}
我现在修改了脚本,如下所示(由于Brian,更新后包含了第一个响应),以检查重复的脚本,但它不起作用。请专家对此进行调查

function append_myVar1_to_myVar2(){
 var myVar1 = document.getElementById('myVar1_value').value;
 var myVar2 = document.getElementById('myVar2_value').value;

    if(document.getElementById('myVar2_value').value == ''){
        document.getElementById('myVar2_value').value = myVar1; 
    }else{
        var flag = 0;
                    var wordsarr = myVar2.split("\r\n");
        for(var i = 0; i < wordsarr.length; i++)
            {
        if(wordsarr[i].value == myVar1)
        {   
        flag = 1;
        }
            }
        if(flag == 1)
        {
        alert('Value is duplicate.');
        }
    else{
        document.getElementById('myVar2_value').value = document.getElementById('myVar2_value').value + "\r\n" + myVar1; 
    }
}}
函数将\u myVar1\u追加到\u myVar2(){
var myVar1=document.getElementById('myVar1_值').value;
var myVar2=document.getElementById('myVar2_值').value;
if(document.getElementById('myVar2_值')。值=“”){
document.getElementById('myVar2_value')。value=myVar1;
}否则{
var标志=0;
var wordsarr=myVar2.split(“\r\n”);
for(var i=0;i
以下是页面的html:

<html>
<body>

<input id="myVar1_value" type="text" maxlength="15" name="myVar1_value">
<input id="IMEI_ADD" class="button_gray" type="button"     onclick="append_myVar1_to_myVar2()" value="Add this IMEI to bulk entry" name="IMEI_ADD">

<p id="imei_bulk_field" class="form-row notes">
<textarea id="myVar2_value" class="input-text" rows="2" cols="5" placeholder="If you have more than one IMEI, insert them here by pressing the button above." name="myVar2_value"></textarea>
</p>

</body>
</html>         


存储分割的块,并对其进行迭代:

var chunkArray = myVar2.split("\r\n");

for(var i = 0; i !== chunkArray.length; i++){
    if(chunkArray[i] == myVar1){   
        flag = 1;
        break;
    }
}
for(var i=0;i<(myVar2.split(“\r\n”)).length;i++)
{
//这是错误的
if(myVar2[i].value==myVar1)
{   
flag=1;
}
你应该换成

       var wordsarr = myVar2.split("\n");
       for(var i = 0; i < worsarr.length; i++)
       {
          if(wordsarr[i] == myVar1)
          {   
             flag = 1;
          }
       }
       if(flag == 1)
       {
          alert('Value is duplicate.');
       }
var-wordsarr=myVar2.split(“\n”);
对于(变量i=0;i
这可能会有所帮助

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle) return true;
    }
    return false;
}
后来

if(myVar2[i].value == myVar1)
看起来您正在添加.value,但不需要添加。请尝试:

if(myVar2[i] == myVar1)

你说的“不工作”是什么意思?它做什么?你希望它做什么?看到我们在这里讨论的内容的html会很有帮助。感谢Aleks/mcgrailm快速恢复。“不工作”这意味着我仍然可以通过单击按钮向第二个字段添加重复值,而不会收到任何警报。而我应该收到警报。我将修改问题以包含相关html。请创建,我们可以使用。感谢Brian更正了这部分代码。显然,我在那里搞砸了。通过查看代码,它看起来很糟糕喜欢它应该可以很好地工作,但不确定为什么它仍然没有帮助。这可能是浏览器问题。我在最新版本的Chrome和Firefox上测试了它,但没有任何运气。我认为拆分词“\r\n”是关键。是的,在重复检查中只考虑了第一个值,这意味着拆分本身存在问题,因此计数无论有多少个值,始终被视为一个。现在出去做一些工作,我回来后会检查更多的组合。太棒了!!!!奇怪了,但正在将myVar2.split(“\r\n”)更改为myVar2.split(“\n”)做了这个把戏。刚刚试过,来到这里发布,注意到你也提出了同样的建议。你的建议绝对正确……全部5颗星:)谢谢工程师,如果以前的解决方案有效,即使这样也会有效。但可能我遗漏了一些东西。我会编辑问题以包含更多细节。是的,删除“.value”有效。现在我在立即添加重复值时收到警报。非常感谢您提供的提示。但仍然存在一个问题,我添加了一个值,然后添加了另一个不同的值,然后我尝试再次添加第一个值,这次我没有收到警报。只有在尝试立即添加重复值时,我才会收到警报。
var myVar2 = document.getElementById('myVar2_value').value;
if(myVar2[i].value == myVar1)
if(myVar2[i] == myVar1)