研究一下checkbox,竟然很有问题啊。
第一个问题:
PHP中的checkbox取值和JSP等不一样,需要吧checkbox写成数组的格式:
<td>
<input name="check[]" type="checkbox" id="check1" size="6" value="Agent">代理区
<input name="check[]" type="checkbox" id="check2" size="6" value="SmsAddr">信息名址后台
<input name="check[]" type="checkbox" id="check3" size="6" value="Member">会员区
</td>
而在普通的JSP或者是HTML中使用checkbox是:check[]没有“[]”
<td>
<input name="check" type="checkbox" id="check1" size="6" value="Agent">代理区
<input name="check" type="checkbox" id="check2" size="6" value="SmsAddr">信息名址后台
<input name="check" type="checkbox" id="check3" size="6" value="Member">会员区
</td>
第二个问题:
注意到上面的id都是不一样的,会造成即使你选择了三个,但是在PHP得到的只是最后一个。
把id全部去掉就没有问题了。但是有需要验证,从而,还是需要有个标识来标注这三个不同的checkbox,所以想到了class属性。
<td>
<input name="check[]" type="checkbox" class="che1" size="6" value="Agent">代理区
<input name="check[]" type="checkbox" class="che2" size="6" value="SmsAddr">信息名址后台
<input name="check[]" type="checkbox" class="che3" size="6" value="Member">会员区
</td>
从而能够实现用JQuery的方式验证:
//判断checkbox不为空的实现
function OkSubmit(objName)
{
var Title = $('#Title').val();
var Content = $('#Content').val();
var DealTime = $('#DealTime').val();
var Title = $.trim(Title);//过滤首尾的空格
var Content = $.trim(Content);
var DealTime = $.trim(DealTime);
var TitleLong = $('#Title').val().length;
if(200 < TitleLong)
{
alert("标题字数须小于100字");//限定标题的长度
return false;
}
if(Title == "" || Content == "" || DealTime =="")
{
alert("请完整填写内容!");
return false;
}
//必须是2005-05-09这种格式,2005-5-5这种格式也不行。
var reg = /[0-9]{4}\-[0-9]{2}\-[0-9]{2}/;
if (!reg.exec(DealTime))
{
alert("请按指定格式的日期填写");
return false;
}
var che1 = $(".che1").attr("checked");
var che2 = $(".che2").attr("checked");
var che3 = $(".che3").attr("checked");
//如果这三个值都是false,就证明没有选择,提示选择
if(false== che1 && false== che2 && false== che3)
{
alert("请至少选择一个平台");
return false;
}
$("input[@type=checkbox][@checked]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出
//alert($(this).val());
$('#form1').submit();
return;
});
}
如上这些代码实现很多页面的验证,字符长度,字符正则的匹配,判空的处理等。都是用JQuery实现的。
$check = $this->getValue("check");这是在PHP中取得多选框的方法,当然是公司封装好框架的方法了,不通用。