2010-05-03 123 views
0

我試圖限制可以檢查的複選框的數量,在這種情況下,只有3可以檢查。當使用純HTML時,這工作正常。代碼可以在下面看到。PHP/JavaScript的限制量的複選框

HTML示例

<td ><input type=checkbox name=ckb value=2 onclick='chkcontrol()';></td><td>Perl</td> 

Javascript函數

<script type="text/javascript"> 
function chkcontrol(j) { 
var total=0; 
for(var i=0; i < document.form1.ckb.length; i++){ 
if(document.form1.ckb[i].checked){ 
total =total +1;} 
if(total > 3){ 
alert("Please Select only three")  
document.form1.ckb[j].checked = false; 
return false; 
} 
}  
} 
</script> 

從MySQL數據庫與值替換固定值HTML時,出現問題。所有信息均正確顯示,並可通過提交按鈕發佈到其他頁面。但是,似乎分配給數據庫中每條記錄的'值'並不是javascript函數的方式。

<td><input name="checkbox[]" type="checkbox" value="<?php echo $rows['TCA_QID'];?>" onclick="chkcontrol();"></td> 

我試圖在javascript函數來匹配「複選框」 name.Any的建議是改了名字不勝感激

感謝

+1

你的函數聲明有一個參數:它在你的函數調用中缺少。 您是否嘗試顯示生成的源代碼? – Rodolphe 2010-05-03 15:44:23

+0

我只是恨痛苦的代碼.......不計算。 – 2010-05-03 15:47:06

回答

0

在第二個版本,你input元素的name是「checkbox []」,但在你的JavaScript函數中,你正在尋找一個nameckb。如果您要求它查找錯誤的名稱,JavaScript函數無法找到您的字段。

你說你試過改變這個。當你嘗試時發生了什麼?確保你命名元素「ckb」,而不是「ckb []」。

你看過了頁面生成的HTML中的複選框的值嗎?它們與你期望的相符嗎?

+0

謝謝你的回覆, 對不起,我沒有做出更清楚的,沒有想要更多的代碼查克。 我將其更改爲複選框,但當超過3個複選框發出警報時,不會顯示警報。然後我改變了它的複選框[],但它再次沒有區別。 是的值完全出自他們應該的。我拿出了大部分函數來確保onclick正在工作,並且有一個簡單的警報工作 - 所以即時猜測'total'變量在單擊複選框時不會遞增 – Carl294 2010-05-03 15:53:11

+0

您的JavaScript代碼引用'document.form1.ckb [i ]'。因此,您的'輸入'元素需要名稱爲'ckb',而不是'checkbox',而不是'checkbox []'。 – Syntactic 2010-05-03 17:04:10

0
<script type="text/javascript"> 
<!-- 
//initial checkCount of zero 
var checkCount=0 

//maximum number of allowed checked boxes 
var maxChecks=3 

function setChecks(obj){ 
//increment/decrement checkCount 
if(obj.checked){ 
checkCount=checkCount+1 
}else{ 
checkCount=checkCount-1 
} 
//if they checked a 4th box, uncheck the box, then decrement checkcount and pop alert 
if (checkCount>maxChecks){ 
obj.checked=false 
checkCount=checkCount-1 
alert('you may only choose up to '+maxChecks+' options') 
} 
} 
//--> 
</script> 

</head> 

<body> 
<form> 
Option1 <input type="checkbox" id="check1" onclick="setChecks(this)"><br /> 
Option2 <input type="checkbox" id="check2" onclick="setChecks(this)"><br /> 
Option3 <input type="checkbox" id="check3" onclick="setChecks(this)"><br /> 
Option4 <input type="checkbox" id="check4" onclick="setChecks(this)"><br /> 
Option5 <input type="checkbox" id="check5" onclick="setChecks(this)"><br /> 
Option6 <input type="checkbox" id="check6" onclick="setChecks(this)"><br /> 

</form> 
</body>