2014-01-17 151 views
1

我想,这是什么脚本:http://www.javascriptkit.com/script/script2/checkboxlimit.shtml是做,但我有一个问题,因为我后我的复选框以PHP数组禁用fx后的复选框。 5选中的复选框

这是我使用的形式代码:

<?php 
$badges = get_user_badges($UserID, true, false); 

$html=''; 
foreach ($badges as $Badge) { 
    list($ID, $BadgeID, $Tooltip, $Name, $Image, $Auto, $Type, $Row,, $Show) = $Badge; 
    if($Show == '1') $selected = ' checked'; else $selected = ''; 
    $html .= '<label><input id="showBadge" name="showBadge['. $ID .']" type="checkbox"'. $selected .'> <img src="'.STATIC_SERVER.'common/badges/'.$Image.'" title="'.$Name.'. '.$Tooltip.'" alt="'.$Name.'" /></label> '; 
} 
echo $html; 
?> 

使用jQuery是一种选择,由于冲突的脚本

+0

如要控制点击事件的数量,您将需要使用JavaScript/jQuery的这一点。 –

+0

javascript是没有问题的,但只要我包含jQuery库中的全局页面函数中的一个,就会中断。 – PeaceDealer

+0

它适合你吗? –

回答

1

你可以在jQuery的做到这一点很容易,但因为你的JavaScript希望它具体请参阅我的回答如下:

在PHP:

$html .= '<label><input id="showBadge" onclick="counter(this)" name="showBadge['. $ID .']" type="checkbox"'. $selected .'> <img src="'.STATIC_SERVER.'common/badges/'.$Image.'" title="'.$Name.'. '.$Tooltip.'" alt="'.$Name.'" /></label> '; 

JS:

var count = 0; 
function counter(element){ 
    if(count<5){ 
     //do something 
    }else{ 
    element.checked = !element.checked; 
    } 
    count++; 
    alert(count); 
} 

小提琴http://jsbin.com/OyIMebis/1

更新:要包含复选框的总数检查状态

var count = 0; 

function counter(element) { 
    if (count < 5) { 
     //do something 
    } else { 
     element.checked = !element.checked; 
    } 
    count++; 

    var inputElems = document.getElementsByTagName("input"), 
     totalCount = 0; 
    for (var i = 0; i < inputElems.length; i++) { 
     if (inputElems[i].type === "checkbox" && inputElems[i].checked === true) { 
      totalCount++; 
     } 
    } 
    alert("Total Checkbox = "+totalCount); 
} 

小提琴http://jsbin.com/OyIMebis/2/

更新2:

只需使用

var inputElems = document.getElementsByClassName("testing") 

更换

var inputElems = document.getElementsByTagName("input") 

,你可以选择与特定类别的复选框。

小提琴http://jsbin.com/OyIMebis/4/ 干杯

+0

我发现它的工作,几乎和预期的一样,有没有办法让它的计数已经打好了? – PeaceDealer

+0

是的,虐待编辑答案.. –

+0

@PeaceDealer:看我的更新 –

0

试试这个代码:添加一个类的每个复选框。

$html .= '<label><input class="chk_bx" id="showBadge" name="showBadge['. $ID .']" type="checkbox"'. $selected .'> <img src="'.STATIC_SERVER.'common/badges/'.$Image.'" title="'.$Name.'. '.$Tooltip.'" alt="'.$Name.'" /></label> '; 

在JS:

$(".chk_bx").live("click",function(){ 
if($('.chk_bx:checked').length == 5) 
{ 
    $(".chk_bx:not(:checked)").attr("disabled", true); 
} 
else 
{ 
    $(".chk_bx:not(:checked)").removeAttr("disabled"); 
} 

}); 
+0

用户如何选择他们想要显示的徽章? – PeaceDealer

+0

选中5复选框后更新的代码禁用。 –

+0

你想在php或javascript中做什么? –