2013-04-05 23 views
-1

每次選中複選框時,都會調用以下函數。我的問題是,我需要另一個功能,應該清除這裏提供的所有數據。使用javascript清除數組和文本框

讓我先解釋一下我的問題:

程序的概念更新與該複選框值的文本框 - 如果兩個複選框被選中,然後在文本框將有兩個值,並因此上。

我需要一個函數來清除該複選框中的數據,這樣,當我點擊它需要只顯示第3個複選框的值第三複選框,通過從文本區移除第一和第二。這應該一切發生無需重新加載頁面

<script> 
    function chkcontrol(j){ 
     var textbox = document.getElementById("list"); 
     var textbox1 = document.getElementById("val_id"); 
     var values = [];  
     var val_id=[]; 
     if(document.getElementById(1).checked) { 
      values.push('A1'); 
      val_id.push('1'); 
     } 
     if(document.getElementById(2).checked) { 
      values.push('A2'); 
      val_id.push('2'); } 
     if(document.getElementById(3).checked) { 
      values.push("A3"); 
      val_id.push('3'); 
     } 
     if(document.getElementById(4).checked) { 
      values.push("A4"); 
      val_id.push('4'); 
     } 
     if(document.getElementById(5).checked) { 
      values.push("A5"); 
      val_id.push('5'); 
     } 
     if(document.getElementById(6).checked) { 
      values.push("A6"); 
      val_id.push('6'); 
     } 

     textbox.value = values.join(","); 
     textbox1.value = val_id.join(","); 
    } 

    function removeAll(){ 
    } 
</script> 

<input id="list" type="text" name="list"> 
<input id="val_id" type="text" name="val_id"> 
<input type="checkbox" name="ckb" value="A1" id="1" onclick='chkcontrol(0)';> 
<label for="1"></label> 
<input type="checkbox" name="ckb" value="A2" id="2" onclick='chkcontrol(0)';> 
<label for="2"></label> 
<input type="checkbox" name="ckb" value="A3" id="3" onclick='chkcontrol(0)';> 
<label for="3"></label> 
+2

我在這裏看不到任何jQuery Oo – 2013-04-05 00:51:27

回答

0

我不知道到底是什麼您這裏需要的,但如果你需要「明確」的JavaScript數組只設置長度,以0(零)。

var a = [0,1,2,3,4,5,6,7,8,9]; 
a.length = 0; // truncate array 

MDN說: 「你可以設置length屬性來截斷隨時數組。」

希望它可以幫助你......

+0

讓我給你一些屏幕截圖,讓你可以捕捉到我的問題 – user1887128 2013-04-05 01:12:40

0

要使用一個循環,例如保存自己一些打字(並有誤差較小的機率)的元素應該訪問

for (var i=1; i<7; i++) { 

    if (document.getElementById(i).checked) { 
    values.push('A' + i); 
    val_id.push('' + 1); 
    } 
} 

如果元素的形式,考慮訪問它們的形式命名的屬性,而不是調用的getElementById多次:

var form = document.getElementById(formID); 
... 

然而,你將需要分配名稱不是數字以避免與控件索引衝突,因此如果將它們重命名爲「input_1」等,則可以執行以下操作:

if (form['input_' + i].checked) { 

要設置「文本框」的值(我會想這是任一輸入類型文本或textarea元素)爲它的默認:

textbox.value = textbox.defaultValue; 
textbox1.value = textbox1.defaultValue; 

「清除」的陣列,無論其長度設置爲0:

values.length = 0; 

或只是一個新的數組

values = []; 

更換如果陣列是由多個變量引用,要做的第一件;否則兩者都可以。

+0

看看休耕的例子我需要相同類型的代碼與一個額外的功能.. – user1887128 2013-04-05 01:27:40

0

我不知道爲什麼我就是了29分鐘,你的代碼,但在這裏它是無論如何。請享用。幾個未來的指針:

  1. 嘗試並保持腳本遠離標記,即使您沒有onclick事件,如果您要使用jQuery。
  2. 如果你發現自己做無休止如果超過DOM元素的集合報表,有可能是一個更好的辦法。

無論如何,我就在我的高馬,下面的代碼:

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("input[type=\"checkbox\"][name=\"ckb\"]").click(function() { 
       var values = []; 
       var val_id = []; 
       var checked = $("input[type=\"checkbox\"][name=\"ckb\"]:checked"); 
       if (checked.length < 3) { 
        checked.each(function (i, e) { 
         values.push($(e).val()); 
         val_id.push($(e).prop("id")); 
        }); 
       } else { 
        values.push($(this).val()); 
        val_id.push($(this).prop("id")); 
       } 
       $("input#list").val(values.join(",")); 
       $("input#val_id").val(val_id.join(",")); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <input id="list" type="text" name="list"> 
    <input id="val_id" type="text" name="val_id"> 
    <input type="checkbox" name="ckb" value="A1" id="1"> 
    <input type="checkbox" name="ckb" value="A2" id="2"> 
    <input type="checkbox" name="ckb" value="A3" id="3"> 
</body> 
</html> 

而且小提琴:http://jsfiddle.net/df59H/

如果你需要清除框:

$("#someButtonId").click(function(){ 
    $("input#list").val(""); 
    $("input#val_id").val(""); 
}); 
+0

是這是我需要的,但有一點功能..我有300多個複選框,我男人選擇任何他們.. 我需要的功能在如果我選擇3個複選框,並點擊按鈕,它會做一些我需要的動作..稍後,當我點擊第4個複選框時,它需要向我展示只有第四個,等等..所以我需要清楚,當我點擊按鈕是可能的 – user1887128 2013-04-05 01:29:37

+0

只要他們被命名爲ckb,你可以添加儘可能多的,你需要的,它會適應。樂意效勞。 – 2013-04-05 01:30:34

+0

由於基本的變化,即<3到<4,您應該能夠根據您的編輯的評論適應我的腳本到任何你需要的。 – 2013-04-05 01:34:35