2016-07-14 140 views
-2

我正在使用以下代碼位來確保至少有一個複選框被選中,它會將複選框的「值」輸出到名爲「cont」的ID。我正在尋找一種方法將輸出轉換爲數組(PHP)。我對JS不太擅長。複選框值爲php數組

<?php 
$count = '0'; 
while($count <= '2') { 
    $count++; 
    $the_name = "chkBx"; 
    $the_value = 'checkbox'.$count; 
    if ($count == '1') { 
     $its_checked = 'checked'; 
    } else { 
     $its_checked = ''; 
    } 
    ?> 
    <input type="checkbox" name="<?php echo $the_name; ?>" value="<?php echo $the_value; ?>" <?php echo $its_checked; ?> > 
    <?php 
} 
?> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<div id="cont"></div><!-- OUTPUTS HERE--> 

<script> 
$('input[type="checkbox"][name="<?php echo $the_name; ?>"]').on('change',function(){ 
    var getArrVal = $('input[type="checkbox"][name="<?php echo $the_name; ?>"]:checked').map(function(){ 
    return this.value; 
    }).toArray(); 

    if(getArrVal.length){ 
    //execute the code 
    $('#cont').html(getArrVal.toString()); 

    } else { 
    $(this).prop("checked",true); 
    $('#cont').html("At least one value must be checked!"); 
    return false; 

    }; 
}); 
</script> 

更新,仍然遇到了麻煩,從打勾到一個PHP變量的複選框的值,這裏是我現在有:

<?php 
$the_name = "myCheck"; 
?> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
1.<input type="checkbox" class="<?php echo $the_name; ?>" name="the_name" value="1" checked> 
2.<input type="checkbox" class="<?php echo $the_name; ?>" name="the_name" value="2"> 
3.<input type="checkbox" class="<?php echo $the_name; ?>" name="the_name" value="3"><br/> 
<span class="cont" name="bob" value="9999"></span> 

<script> 
function checkIt() { 
    var getArrVal = $(".myCheck:checked").map(function() { 
     return this.value; 
    }).get(); 
    if (getArrVal.length) { 
     $('.cont').html(getArrVal.join(",")); 

     var x=$(".cont").text(); 
     var variablename = $(".cont").val(); 

    } else { 
     $('.cont').html("At least one value must be checked!"); 
     $(this).prop("checked", true); 
     getArrVal=[$(this).val()]; 
     return false; 
    } 
    console.log(getArrVal); 
} 
$(function() { 
    $(".myCheck").on('click',checkIt); 
    checkIt(); 
}); 
</script> 
+0

你需要什麼數組?同樣地圖返回一個數組 – mplungjan

+0

您可能想要使用AJAX將輸出發送到PHP,或者可能我沒有理解您的問題 – Ahmad

回答

0

你需要什麼的陣列?

如果你這樣做,你需要不斷設置它,無論在負載和不允許的複選框被刪除

我會親自使用一個類上,這使得更短的腳本chekcbox:

function checkIt() { 
 
    var getArrVal = $(".myCheck:checked").map(function() { 
 
     return this.value; 
 
    }).get(); 
 
    if (getArrVal.length) { 
 
     $('#cont').html(getArrVal.join(",")); 
 
    } else { 
 
     $('#cont').html("At least one value must be checked!"); 
 
     $(this).prop("checked", true); 
 
     getArrVal=[$(this).val()]; 
 
     return false; 
 
    } 
 
    console.log(getArrVal); 
 
} 
 
$(function() { 
 
    $(".myCheck").on('click',checkIt); 
 
    checkIt(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
1.<input type="checkbox" class="myCheck" name="the_name" value="1" checked> 2.<input type="checkbox" class="myCheck" name="the_name" value="2"> 
 
3.<input type="checkbox" class="myCheck" name="the_name" value="3"><br/> 
 
<span id="cont"></span>

+0

複選框處於循環中,所以認爲最好的方法是將數值放入數組中後來。 這將工作在一個循環? –

+0

我的代碼並不在乎你如何生成輸入。要在服務器上接收數組,通常在使用PHP – mplungjan

+0

時,我通常會給出'name =「somename []」'我最初嘗試使用name =「somename []」,但JS只存儲了循環中的最後一個值。 –