CakePHP form radio使用方法及radio丢失数据的解决办法

CakePHP有着一系列强大的Helper,比如:Html,Javascript, Form (Form是在1.2后才从Html Helper中分离出来的)。当然您也可以自己写Helper来简化CakePHP项目中对View层的操作。

其中Form(表单)Helper中有一个方法为“radio”,其使用方法如下 View层:

$form->radio($fieldName, $options = array(), $attributes = array());

$fieldName为字段名称,比如:News.title

$options Radio项数组,比如:array('1" => "Radio1")。这样生成的单选按钮名字为Radio1值为1的单选按钮。

$attributes Radio按钮的属性,比如:array('legend" => false):去除Legend边框;array('value" => 1):选中值为1的单选按钮;array('separator" => " '):单选按钮间用空格分隔…

用CakePHP form radio生成的单选按钮很容易造成Radio值丢失,也就是在Post数据的时候,明明选中了某个间选按钮了。可是传过来的数据却是空的。这种情况多发生在用$form->radio多次生成相同FieldName的单选按钮的情况下。

在做一个淘宝网手机的项目中就出现过这种情况。后台管理那里出现的,现在也不便展示,如果您希望看就看看前台吧:http://www.xgto.cn

相应的解决办法:

当使用$form->radio()生成的单选按钮,CakePHP默认会加入一个Hidden域形如:<input type="hidden" name="data[News][title]" id="NewsTitle_" value="" />

解决办法相对简单,去除第二次,第三次…使用Radio时生成的Hidden域即可。避免生成Hidden域CakePHP并没有提供开关控制(具有研究所知)。

简单的字符串操作去除即可。str_replace或是其它的…

版块:Cake文档 Tags: , 时间:2009-10-08 评论:(0)

JavaScript动态选择单选框Radio代码 click()方法

一不小心忘记了怎样使用JavaScript动态选择单选框了,试了很多方法:focus(),select()…都无济于事。最后终于用click()方法搞定。记录在此,以后忘了方便查看。

 
HTML代码如下
  1. <input type="radio" name="data[Store][type]" class="radio" id="storeType1" value="1" /><label for="storeType1">全部</label>  
  2. <input type="radio" name="data[Store][type]" class="radio" id="storeType2" value="2" /><label for="storeType2">女装</label>  
  3. <input type="radio" name="data[Store][type]" class="radio" id="storeType3" value="3" /><label for="storeType3">男装</label>  

JavaScript用的jQuery框架

JavaScript代码如下
  1. jQuery(function() {   
  2.     jQuery(".radio[name*=Store][name*=type][value=1]").click();   
  3. });  
版块:javascript笔记 Tags: , , , , 时间:2009-04-02 评论:(0)