2011-09-05 147 views
0

我正在使用一系列複選框,所有複選框的名稱都是checkbox1 .... checkbox40。如果複選框被選中,我將生成一系列的'1'和'0'sting,而sting將與'1'連接,否則它將連接'0'。我已經成功實現了PHP的想法,但現在我正在使用Ajax我想爲Java腳本開發相同的代碼。我的PHP代碼是修改PHP代碼從php

if (isset($_POST[submit])) 
{ 
for ($i=1; $i<41; $i++) 
    { 
    $walue = "restriction".$i; 
    if(isset($_POST[$walue])) {$val .="1";} else {$val .="0";} 
    } 
} 
echo "Equivalent String: ".$val."<p>"; 

用於使用Javascript實現它我已經在窗體的提交事件上調用了一個函數。

我的表單ID是theForm,我的複選框名稱是restriction1....restriction40。請給我提示實施這個想法。

回答

1

所以..這樣的事情?

getCheckedString = function() { 
    var chunks = []; 
    var checkboxes = $("#theForm").children('input[type=checkbox]').each(function() { 
     chunks[chunks.length] = $(this).is(':checked') ? '1' : '0'; 
    }); 
    return chunks.join(''); 
} 

這將收集了所有在它們在窗體上的順序的複選框的,把一個「1」或「0」的陣列中,則返回所述陣列連接成一個字符串。它不是特定於某個特定名稱,所以如果表單中有其他複選框,請通知我,我會更改我的答案。

+0

複選框被命名爲'restriction1 .... restriction40.'和形式具有ID'theForm' –

1

如果您只命名複選框,你會怎麼做:

function getCheckedString1() { 
    var val = ""; 
    for (var i = 1; i <= 40; ++i) { 
     var boxes = document.getElementsByName("restriction" + i); // returns an array 
     if (boxes[0]) { 
      val += boxes[0].checked ? "1" : "0"; 
     } 
    } 
    // alert(val); 
    return val; 
} 

但是,它更容易和平常實踐認同的ID所引用的HTML元素。所以,你會提高你的HTML:

<input type="checkbox" name="restriction1" id="restriction1" ... 
<input type="checkbox" name="restriction2" id="restriction2" ... 

,然後使用:

function getCheckedString2() { 
    var val = ""; 
    for (var i = 1; i <= 40; ++i) { 
     var box = document.getElementById("restriction" + i); // returns the unique element 
     if (box) { 
      val += box.checked ? "1" : "0"; 
     } 
    } 
    // alert(val); 
    return val; 
}