2013-10-12 33 views
0

我已經嘗試了一整天來做到這一點 - 並且也進行了搜索。Javascript:創建循環來對選中的複選框的結果進行協調

我有一個html格式的複選框。如果他們被選中,我需要立即concat並顯示值到一個單獨的文本區域。我的函數currenty工程,但我需要創建一個循環,因爲我不能確定複選框的數量,因爲它們是動態的。

我的功能如下。

<script type="text/javascript">  

      function combGenderSeekingGender() { 
       if (document.jomsForm.jsgenderseekinggender1.checked){ 
        alert("input1 is checked"); 
        var input1 = document.jomsForm.jsgenderseekinggender1.value; 
       }else{ 
        alert("input1 is NOT checked"); 
        var input1 = ""; 
       } 


       if (document.jomsForm.jsgenderseekinggender2.checked){ 
        alert("input2 is checked"); 
        var input2 = document.jomsForm.jsgenderseekinggender2.value; 
       }else{ 
        alert("input2 is NOT checked"); 
        var input2 = ""; 
       } 

       if (document.jomsForm.jsgenderseekinggender3.checked){ 
        alert("input3 is checked"); 
        var input3 = document.jomsForm.jsgenderseekinggender3.value; 
       }else{ 
        alert("input3 is NOT checked"); 
        var input3 = ""; 
       } 

       if (document.jomsForm.jsgenderseekinggender4.checked){ 
        alert("input4 is checked"); 
        var input4 = document.jomsForm.jsgenderseekinggender4.value; 
       }else{ 
        alert("input4 is NOT checked"); 
        var input4 = ""; 
       } 

       var tmpInput =input1 + "-" + input2 + "-" + input3 + "-" + input4; 
       document.jomsForm.jsgenderseekinggender.value = tmpInput.replace(/^[\s-]+|[\s-]+$/g,"");      
      } 

     </script> 

這個函數被調用,以動態創建我的複選框,這樣一個循環:

$html .= '<input type="checkbox" onClick="combGenderSeekingGender()" id="jsgenderseekinggender'.$elementCnt.'" name="jsgenderseekinggender'.$elementCnt.'" value="'.$genderseekinggenderItem.'"/>'; 

一切工作正常,但我需要刪除的硬編碼的js的功能,創造一個純淨的循環。我能夠將elementCount傳遞給有助於設置極限的函數,但似乎無法得到循環的其餘部分,因爲我似乎可以定義動態變量名稱。

我基本上是我一直努力的這個變化:

function combGenderSeekingGender(numResults) { 
        var input=[]; 
        for (ii=1;ii<=numResults;ii++){ 
         if (document.jomsForm.jsgenderseekinggender[ii].checked){ 
          alert("input"+ii+" is checked"); 
          var input[ii] = document.jomsForm.jsgenderseekinggender[ii].value; 
         }else{ 
          alert("input"+ii+" is NOT checked"); 
          var input[ii] = ""; 
         } 

        } 


        var tmpInput =input1 + "-" + input2 + "-" + input3 + "-" + input4; 
        document.jomsForm.jsgenderseekinggender.value = tmpInput.replace(/^[\s-]+|[\s-]+$/g,"");      
       } 

當然,這更僞代碼比什麼都重要,因爲我知道它不是正確的方法T代碼它。任何意見,以獲得正確的語法,將不勝感激..

+0

其中是複選框的值聲明? –

+0

該值在變量$ genderseekinggenderItem中聲明,該變量由循環填充:foreach($ result as $ genderseekinggenderItem)。你可以在輸入標籤中看到它 – makenoiz

回答

0

你應該使用jquery:

var result = ""; 
$("input:checked").each(function(){ 
    result = result + "-" + $(this).val(); 
}); 

這將環通所有選定的複選框並連接它們的值造成的。

+0

好吧我會對jqery進行一些研究。感謝提示。 – makenoiz