2013-06-19 88 views
2

我有類似追加到222222222222222另一個字段的字符串(這要麼是空白,或者已經有像222222222222222 33333333333333號),一個按鈕,點擊一個JavaScript。實際上它是手機的15位數的IMEI。用戶可以選擇提交單個IMEI或批量IMEI。當一個以上的IMEI通過按壓從myVar1按鈕添加到散裝字段,新的IMEI被插入之前的IMEI下面在本體字段(myVar2)。重複檢查在JavaScript中插入新記錄之前

目前,我使用下面的腳本來做到這一點,它的工作完美的罰款。問題是它不會在追加之前檢查重複項。

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>   
+3

什麼你的意思是「不工作」嗎?它做什麼,你想做什麼? –

+0

這將是有益的,看看我們在這裏談論 – mcgrailm

+0

感謝阿萊克斯/ mcgrailm快速恢復的HTML。 「不工作」意味着我仍然可以通過單擊按鈕將重複值添加到第二個字段,並且不會收到任何警報。而我應該得到一個警報。我將修改問題以包含相關的html。 – Amit

回答

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.'); 
     } 
+0

感謝Brian糾正這部分代碼。顯然我在那裏搞亂了。通過查看代碼,它看起來應該是完美的,但不知道爲什麼它仍然沒有幫助。這可能是瀏覽器問題。我沒有任何運氣就在最新版本的Chrome和Firefox上測試過它。 – Amit

+0

我認爲分詞'\ r \ n'是關鍵。 –

+0

是的,只有第一個值正在重複檢查,這意味着在分裂的問題自居使得計數始終被視爲一個無論多少值都在那裏。現在出去做一些工作,我很快就會檢查更多的組合。 – Amit

2

商店分裂塊,並在它們之間迭代:

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

for(var i = 0; i !== chunkArray.length; i++){ 
    if(chunkArray[i] == myVar1){ 
     flag = 1; 
     break; 
    } 
} 
+0

感謝工程師,如果以前的解決方案工作,甚至這將工作。但可能有些東西我缺少。我將編輯問題以包含更多詳細信息。 – Amit

0

這可能是幫助

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

你可以改變,如果用:

haystack[i].value == needle 
1
var myVar2 = document.getElementById('myVar2_value').value; 

後來......

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

它看起來像要添加.value的時你不需要。嘗試:

if(myVar2[i] == myVar1) 
+0

是的,刪除「.value」工作。現在,當立即添加重複值時,我會收到警報。非常感謝提示。仍然有一個問題,我添加一個值,然後我添加另一個不同的值,然後我嘗試再次添加第一個值,這次我沒有得到警報。我只在嘗試添加直接重複值時收到警報。 – Amit

相關問題