<form>
<input type="checkbox" key="1"/>
<input type="hidden" name="checked[1]" value="false">
<input type="checkbox" key="2"/>
<input type="hidden" name="checked[2]" value="false">
<input type="checkbox" key="3"/>
<input type="hidden" name="checked[3]" value="false">
<input type="checkbox" key="4"/>
<input type="hidden" name="checked[4]" value="false">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('[key]').change(function() {
var key = $(this).attr('key');
$($('[name="checked[' + key + ']"]')).val($(this).is(':checked') ? 'true' : 'false');
});
});
</script>
這裏是我在做什麼
我使用兩個輸入一個沒有名字的複選框,這樣就不會被髮送到PHP ,另一個是隱藏的將不會顯示給用戶,但它是什麼將發送到php
然後用jquery當用戶選中框jquery將隱藏輸入的值更改爲true,當取消選中它時更改該值爲假
因此該值將始終發送到PHP和值true或false string
你可以改變你要發送通過改變這個 .is(':checked')?'true':'false')
到類似的東西.is(':checked')?1:0)
到PHP送1的值, 0,而不是真假
另一種解決方案是rybo111解決
<input type="hidden" name="check" value="false">
<input type="checkbox" name="check" value="true">
它將把兩個選項,但如果選中該複選框我T將覆蓋第一個選項
,但它是不可靠的100%,這將更多的數據發送到服務器
閱讀更多有關在POSTing Form Fields with same Name Attribute
,所以如果你想使用沒有JS簡單的解決方案使用「HTML僅」 如果你想100%可靠的解決方案用「JS」
你不能用html做,所以你有2個選項1使用javascript,2使用下拉列表而不是複選框 – robert
爲什麼不把它添加到你的php: $ checked = isset(_POST ['checked']) && _POST ['checked'] == 1; – sabkaraja
@robert我很懷疑,在這種情況下,下拉列表並不是一種替代方案,但我更多地打開基於JS的解決方案。我將如何去與JS做這個? (我對JS的經驗非常有限) – Gurgy