2014-01-26 84 views
0

我有()動作下拉框調用actionFunc做一些如何存儲所有選中複選框的所有ID?

這裏是actionFunc():

<script language="javascript"> 

    $(document).ready(function() 
    { 

     $("#paradigm_all").click(function()    
     { 
      var checked_status = this.checked; 
      $("input[name=notPaid]").each(function() 
      { 
       this.checked = checked_status; 

      }); 

     });     
    }); 

    function actionFunc(){ 
       var CHKcollect = []; 

     CHKcollect.push($("input[name=notPaid]:checked").attr('id')); 
     alert (CHKcollect); 

     } 


</script> 

這裏的複選框

<input id="<separator>'.$user_id.'<separator>'.$orvalue.'<separator>'.$prodId.'<separator>" name="notPaid" class="css-checkbox" type="checkbox" onClick="notPAID(this.id)" /> 

..... ..這裏是選擇框

<a><select onchange="actionFunc()" id="itemselected" class="optselct" > 
      <option value="Select" selected="selected">Select the action</option> 
      <option value="pay">Pay for it</option> 
      <option value="del">Delete it</option> 
      <option value="mov">Move to waiting list</option> 
     </select></a> 

該函數只警告f首先選中複選框,而不是所有選中的複選框。 我在這裏做錯了什麼?我需要所有的ID存儲在數組中要由JSON提前解析

感謝

回答

1

如果您引用jQuery文檔對位於attr功能你會看到他們聲明如下...

獲取匹配元素集合中第一個元素的屬性值,或爲每個匹配的元素設置一個或多個屬性。

你只得到了數組中的第一個元素的原因是因爲這條線的..

CHKcollect.push($("input[name=notPaid]:checked").attr('id')); 

你只得到了第一個元素的屬性返回,並不是所有的他們。

您需要迭代每個返回的元素並獲取該屬性。

$("input[name=notPaid]:checked").each(function() 
{ 
    CHKcollect.push($(this).attr('id')); 
}); 
+0

很好的幫助謝謝你,你太棒了,我只是不明白爲什麼有人回答而沒有閱讀這個問題。 –

+0

你能投票給我嗎,我不知道爲什麼有人投下我的問題,讚賞 –

1
var CHKcollect = []; 

$("input[name='notPaid']:checked").each(function(){ 
    CHKcollect.push(this.id); 
}); 

alert(CHKcollect); 
0
$('#itemselected').on('change', function() 
      { 
       var CHKcollect = []; 

       $("input[name=notPaid]:checked").each(function() { 

        CHKcollect.push(this.id); 


       }); 

       alert(CHKcollect); 
      }); 

檢查工作jsFiddle