我有这样的表格:
<form name ='vote' action='' method='POST'>
while ($row = mysql_fetch_array($result)){
<input type='checkbox' name='things[]' value='".$row['name_song']."'
name='send' onClick='anyCheck(this.form)'>
}
<input type='submit' value='test' name='send'></form>
我必须做些什么才能让人们投票的最长时间( t )为整数?我希望将值传递给anyCheck函数,例如$ maxvotes。
<script type="text/javascript">
function anyCheck(f, e) {
e = e || window.event;
var t = 0;
var c = f['things[]'];
for (var i = 0; i < c.length; i++) {
c[i].checked ? t++ : null;
}
if (t == 3) {
alert("Daugiausiai galite balsuoti už triks kūrinius")
var targ = event.target || event.srcElement;
targ.checked = false;
}
}
</script>
答案 0 :(得分:1)
由于从事件处理程序调用{{1}},将anyCheck
对象传递给event
函数,获取事件的目标,并将其anyCheck()
属性设置为.checked
。
false
<input ... onClick='anyCheck(this.form, event)'>
或者由于处理程序是直接绑定的,因此您可以改为function anyCheck(f, e) {
var t = 0;
var c = f['things[]'];
for (var i = 0; i < c.length; i++) {
c[i].checked ? t++ : null;
}
if (t == 3) {
alert("You can choose a maximum of 2" + name + "haha");
(event.target || event.srcElement).checked = false;
}
}
。
this
<input ... onClick='anyCheck(this)'>
答案 1 :(得分:0)
此解决方案需要jQuery,尽管您可以将其重新设计为不需要jQuery选择器:
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<script type="text/javascript">
$(document).on("click", "input[type=checkbox]", function(e) {
var num_checked = $("input[type=checkbox]:checked").length;
if (num_checked > 3) {
alert("sorry, you have already selected 3 checkboxes!");
$(e.target).prop('checked', false);
}
});
</script>
作为一个jsfiddle:http://jsfiddle.net/RF5Ls/