我正在使用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" >
<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>
浏览器来源:
<div class="span-19">
<div id="content">
<div class="row" style="border-top:thin #333 solid">
<img src="/Patra/images/job-banner.jpg" width="100%">
</div>
<form action="/Patra/index.php/jobs/index2" method="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">
<div class="checkbox"><label><input type="hidden" value="N" name="Accouting"><input value="hhhhhhhhhhh" type="checkbox" name="Accouting" id="Accouting">Accouting</label></div><div class="checkbox"><label><input type="hidden" value="N" name="Finance"><input value="hhhhhhhhhhh" type="checkbox" name="Finance" id="Finance">Finance</label></div><div class="checkbox"><label><input type="hidden" value="N" name="Insurance"><input value="hhhhhhhhhhh" type="checkbox" name="Insurance" id="Insurance">Insurance</label></div><div class="checkbox"><label><input type="hidden" value="N" name="HR training"><input value="hhhhhhhhhhh" type="checkbox" name="HR training" id="HR_training">HR training</label></div><div class="checkbox"><label><input type="hidden" value="N" name="information Technology"><input value="hhhhhhhhhhh" type="checkbox" name="information Technology" id="information_Technology">information Technology</label></div> </div>
<hr>
<h4>Location</h4>
<div id="Location">
<div class="checkbox"><label><input type="hidden" value="N" name="Lebanon"><input value="hhhhhhhhhhh" type="checkbox" name="Lebanon" id="Lebanon">Lebanon</label></div><div class="checkbox"><label><input type="hidden" value="N" name="UAE"><input value="hhhhhhhhhhh" type="checkbox" name="UAE" id="UAE">UAE</label></div><div class="checkbox"><label><input type="hidden" value="N" name="Saudi Arabia"><input value="hhhhhhhhhhh" type="checkbox" name="Saudi Arabia" id="Saudi_Arabia">Saudi Arabia</label></div><div class="checkbox"><label><input type="hidden" value="N" name="United Kingdom"><input value="hhhhhhhhhhh" type="checkbox" name="United Kingdom" id="United_Kingdom">United Kingdom</label></div><div class="checkbox"><label><input type="hidden" value="N" name="United States"><input value="hhhhhhhhhhh" type="checkbox" name="United States" id="United_States">United States</label></div><div class="checkbox"><label><input type="hidden" value="N" name="Eygpt"><input value="hhhhhhhhhhh" type="checkbox" name="Eygpt" id="Eygpt">Eygpt</label></div><div class="checkbox"><label><input type="hidden" value="N" name="mohammad"><input value="hhhhhhhhhhh" type="checkbox" name="mohammad" id="mohammad">mohammad</label></div><div class="checkbox"><label><input type="hidden" value="N" name="hiiiiiiii"><input value="hhhhhhhhhhh" type="checkbox" name="hiiiiiiii" id="hiiiiiiii">hiiiiiiii</label></div><div class="checkbox"><label><input type="hidden" value="N" name="bvbvbvbvbv"><input value="hhhhhhhhhhh" type="checkbox" name="bvbvbvbvbv" id="bvbvbvbvbv">bvbvbvbvbv</label></div><div class="checkbox"><label><input type="hidden" value="N" name="tststststststs"><input value="hhhhhhhhhhh" type="checkbox" name="tststststststs" id="tststststststs">tststststststs</label></div> </div>
<hr>
<h4>Status</h4>
<div class="checkbox"><label><input type="hidden" value="N" name="Permanent"><input value="hhhhhhhhhhh" type="checkbox" name="Permanent" id="Permanent"> Permanent</label></div>
<div class="checkbox"><label><input type="hidden" value="N" name="Temporary"><input value="hhhhhhhhhhh" type="checkbox" name="Temporary" id="Temporary"> Temporary</label></div>
<hr>
<h4>Hours</h4>
<div class="checkbox"><label><input type="hidden" value="N" name="FullTime"><input value="hhhhhhhhhhh" type="checkbox" name="FullTime" id="FullTime"> Full-Time</label></div>
<div class="checkbox"><label><input type="hidden" value="N" name="PartTime"><input value="hhhhhhhhhhh" type="checkbox" name="PartTime" id="PartTime"> Part-Time</label></div>
<div class="checkbox"><label><input type="hidden" value="N" name="Flexible"><input value="hhhhhhhhhhh" type="checkbox" name="Flexible" id="Flexible"> Flexible</label></div>
<hr>
<h4>Salary</h4>
<div id="Salary">
<select class="form-control" name="s" id="s">
<option value="">Select salary</option>
<option value="1000$">1000$</option>
<option value="2000$">2000$</option>
<option value="3000$">3000$</option>
<option value="4000$">4000$</option>
<option value="5000$">5000$</option>
<option value="6000$">6000$</option>
<option value="7000$">7000$</option>
<option value="8000$">8000$</option>
<option value="9000$">9000$</option>
</select>
</div>
<input type="submit" name="yt0" value="Search" id="yt0"> </div>
</div><!-- /.blog-sidebar -->
为什么复选框总是发布到操作中?为什么他们的价值总是1?
答案 0 :(得分:2)
您的代码包含hidden
元素,但不清楚您认为自己需要它们的原因:
<input type="hidden" value="N" name="HR training">
<input value="hhhhhhhhhhh" type="checkbox" name="HR training" id="HR_training">
您的每个hidden
元素都使用与name
元素完全相同的checkbox
元素。
post数组使用name
属性,因此如果两个不同的元素共享相同的name
,那么你的post数组将没有多大意义。换句话说,当你在post数组中看到“HR training”时,你怎么知道这是hidden
元素还是checkbox
?
每个输入都应该有唯一 name
。无线电/复选框的“分组”是例外,这只是因为该组被视为单个数据点。
示例强>:
状态:永久性还是临时性?(请注意使用radio
按钮,因为选择不能同时使用。)
<input type="radio" name="status" value="permanent" />: Permanent
<input type="radio" name="status" value="temporary" />: Temporary
会给你以下结果:
status=permanent
status=temporary
status
与此同时,这个带有浏览器源代码的演示显示您所描述的问题尚未发生。您未选中的复选框都不是序列化数组的一部分。