2

我有一个javascript,只需单击一个按钮,即可将诸如222222222222222之类的字符串附加到另一个字段(该字段将为空白或已经具有诸如222222222222222 33333333333333之类的数字)。实际上它是手机的 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; 
    }
}}

这是页面的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>         
4

4 回答 4

2

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

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

for(var i = 0; i !== chunkArray.length; i++){
    if(chunkArray[i] == myVar1){   
        flag = 1;
        break;
    }
}
于 2013-06-19T12:32:21.173 回答
2
        for(var i = 0; i < (myVar2.split("\r\n")).length; i++)
        {
        //here is wrong
            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.');
       }
于 2013-06-19T12:32:31.297 回答
1
var myVar2 = document.getElementById('myVar2_value').value;

之后...

if(myVar2[i].value == myVar1)

看起来您在不需要时添加 .value 。尝试:

if(myVar2[i] == myVar1)
于 2013-06-19T13:31:20.027 回答
0

这可能会有所帮助

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

你可以改变 if :

haystack[i].value == needle
于 2013-06-19T13:27:38.557 回答