2012-11-27 82 views
0

林有關如何填充一些複選框與處於newArray[]這裏的值的一些問題複選框是不言而喻的代碼:
HTML:如何填充與陣列的jQuery

<form id="myForm"> 
    <div id ="checkboxes"> 
     <table> 
      <tr> 
       <td> 
        <label class="checkbox"> 
         <input type="checkbox" name="my_opt[]" value="1"> 
         Total 
        </label> 
       </td> 
       <td> 
        <label class="checkbox"> 
         <input type="checkbox" name="my_opt[]" value="2"> 
         Male 
        </label> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <label class="checkbox"> 
         <input type="checkbox" name="my_opt[]" value="3"> 
         Female 
        </label> 
       </td> 
       <td> 
        <label class="checkbox"> 
         <input type="checkbox" name="my_opt[]" value="4"> 
         Age 
        </label> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <label class="checkbox"> 
         <input type="checkbox" name="my_opt[]" value="5"> 
         Score 
        </label> 
       </td> 
      </tr> 
     </table> 
    </div> 
    <input id='my_opt' type='hidden' name='my_opt[]' /> 
</form> 

腳本:

<script> 
    //checkboxes 
    var check_box_values = $('#myForm [type="checkbox"]:not(:checked)').map(function() { 
     return parseInt(this.value); 
    }).get(); 

    (...) 

    j = j + 1; 

    //creating new button 
    $("#save").append(
     $("<input type=button id=saved"+j+">").click(function() { 
     (...) 
     }).text("Chart"+j) 
    ); 

    //change the checkboxes to new values from array 
    var newArray = []; 
    newArray[4] = check_box_values; //i want that to be [4] 
    //click on new button 
    $('#saved'+j).click(function() { 
     $('#checkboxes').val(newArray[4]); 
    }); 
</script> 

這不工作,錯誤似乎在$('#checkboxes').val(newArray[4]);。 我想要的是,複選框轉向基於數據newArray[4]; 例如。如果newArray[4] = [2,3,4]

我錯過了語法:你能幫我嗎?

+0

Unreleated但重要的是:使用樣式的無序列表,而不是一個表,這個類型的佈局。 –

+0

我不明白。在'check_box_values'中,您只收集未勾選複選框的複選框值,但是現在您需要確定要檢查哪個複選框?所以你想只檢查未經檢查的複選框?爲什麼不首先檢查所有複選框? – devnull69

+0

@ devnull69,你是對的。我可以檢查所有的複選框,然後看看哪些被檢查,哪些不? – pleaseDeleteMe

回答

1

我認爲這是一些你是如何實現的。

這裏是現場example

下面是使用jQuery代碼:

$(function(){ 

var $checkboxes = $('#checkboxes').find('input[type=checkbox]'), 
    times = 0; 

function checkBoxes() { 
    var checked = [], 
     unchecked = []; 

    $checkboxes.each(function (index) { 
     if ($(this).is(':checked')) { 
      checked.push(index); 
     } else { 
      unchecked.push(index); 
     } 
    }); 

    $('#checkboxes').append('<a href="#" class="btn">Check boxes [' + checked.toString() + ']</a>') 
     .find('a.btn:last') 
     .data('check', checked) 
     .on('click', function() { 
      var data = $(this).data('check'); 
      console.log(data, $(this).index()); 

      $checkboxes.attr('checked', false); 
      $checkboxes.each(function (index) { 
      if (data.indexOf(index) >= 0) { 
       $(this).attr('checked', true); 
      } 
      }); 
    }); 
} 

setInterval(checkBoxes, 3000); 
});