为什么即使未经检查也会发布元素?

时间:2014-06-24 15:28:31

标签: 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" >

              <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?

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

与此同时,这个带有浏览器源代码的演示显示您所描述的问题尚未发生。您未选中的复选框都不是序列化数组的一部分。

http://jsfiddle.net/mhpVm/1/