Php 为什么元素在未选中的情况下仍被发布?
我正在使用Yii,我想提交一个表单到一个操作。在操作中,我得到一个复选框,即使我没有选中它,但它的值始终为1,下面是我的代码:Php 为什么元素在未选中的情况下仍被发布?,php,ajax,post,checkbox,yii,Php,Ajax,Post,Checkbox,Yii,我正在使用Yii,我想提交一个表单到一个操作。在操作中,我得到一个复选框,即使我没有选中它,但它的值始终为1,下面是我的代码: <?php echo CHtml::beginForm(Yii::app()->createUrl('jobs/index2'), 'POST'); ?> <div class="row"> <div class="col-sm-4 col-lg-3 blog-sidebar" >
<?php echo CHtml::beginForm(Yii::app()->createUrl('jobs/index2'), 'POST'); ?>
<div class="row">
<div class="col-sm-4 col-lg-3 blog-sidebar" >
<div class="sidebar-module">
<h4 style="color:#D11F45">Refine your search</h4>
<h4>Division</h4>
<div id="Division">
<?php
$i = 0;
foreach ($model2 as $m2){
if($m2['category']==('Division')){
echo '<div class="checkbox"><label>'.
CHtml::checkBox("c".$i, false).$m2->tag
.'</label></div>';
$i++;
}
}
?>
</div>
<hr>
<h4>Location</h4>
<div id="Location">
<?php
foreach ($model2 as $m2){
if($m2['category']=='Location'){
echo '<div class="checkbox"><label>'.
CHtml::checkBox("c".$i, false, array('value'=>'hhhhhhhhhhh', 'uncheckValue'=>'N')).$m2->tag
.'</label></div>';
$i++;}
}
?>
</div>
<hr>
<?php
echo CHtml::ajaxSubmitButton(
'Search',
array('jobs/index2'),
array(
'update'=>'#jobslist',
)
);
?>
</div>
</div><!-- /.blog-sidebar -->
<?php echo CHtml::endForm(); ?>
<div class="col-sm-8 col-lg-9 blog-main" id="jobslist">
<?php echo $this->renderPartial('_index', array('model'=>$model)); ?>
</div>
</div>
</div>
</div>
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/j.js"></script>
优化搜索
分部
您的代码包含隐藏的元素,但不清楚您为什么认为需要它们:
<input type="hidden" value="N" name="HR training">
<input value="hhhhhhhhhhh" type="checkbox" name="HR training" id="HR_training">
将为您提供以下结果:
- 如果选中“永久”,数据将包含
status=Permanent
- 如果选中“临时”,数据将包含
status=Temporary
- 如果两者都未选中,则数据将根本不包含
状态
同时,这个带有浏览器源代码的演示显示您描述的问题没有发生。未选中的复选框都不是序列化数组的一部分
在浏览器源代码中显示此代码的呈现方式如何?@Sparky在浏览器源代码中,复选框值分配正确。请显示呈现的代码。如果它正在做你声称的事情,浏览器中的代码将直接负责。。。不是服务器上的原始代码。@Sparky ok,请参阅编辑说明:我为所有复选框添加了false,数组('value'=>'hhhhhhh','uncheckValue'=>'N')
从数组中删除uncheckValue
可以删除隐藏的元素,但为什么从您显示的代码中,过帐值总是1???@user2101939,这是不可能的:~请显示足够的代码来重现问题。多大的失败???我没有注意到我将isset($\u POST[''])
赋值给变量而不是$\u POST[''']
,因此1来自isset()
函数的布尔返回
<input type="hidden" value="N" name="HR training">
<input value="hhhhhhhhhhh" type="checkbox" name="HR training" id="HR_training">
<input type="radio" name="status" value="permanent" />: Permanent
<input type="radio" name="status" value="temporary" />: Temporary