复选框值未提交

时间:2014-05-09 07:16:21

标签: php html codeigniter checkbox

修改 表单和复选框在Internet Explorer 8中完全提交。在IE 10和Chrome 34.0中,它没有提交

好的,这个让我难过。我有一个表单,每个表单包含一个测验问题,可能的答案,以及一个选中哪个是正确答案的复选框。

<form action="/department/update_quiz_question/1/1/5" method="post" class="form-horizontal form-bordered form-row-stripped" id="question_form_5">
  <tr id="question_5">
    <td class="col-md-4">
      <textarea name="quiz_question" class="form-control" rows="4">What letter precedes B?</textarea>
    </td>

    <td class="col-md-5">
      <div class="input-group ">
        <input type="text" class="col-md-5 form-control" name="answer[]" value="A">
        <span class="input-group-addon">
          <input type="checkbox" checked="checked" name="correct_answer[]" value="A">
        </span>

        <span class="input-group-btn">
          <button class="btn red btn-delete-answer" type="button" data-question-id="5" data-answer="A"><i class="fa fa-trash-o"></i></button>
        </span>
      </div>
    </td>

    <td class="col-md-3">
      <a href="javascript:;" class="btn btn-sm blue btn-add-answer-existing" data-question-id="5">Add Answer</a> 
      <a href="javascript:;" class="btn btn-sm green btn-update-question" data-question-id="5">Update</a> 
      <a href="javascript:;" class="btn btn-sm red btn-delete-question" data-question-id="5">Delete</a>
    </td>
  </tr>
</form>

当我提交表单时,它会转到Codeigniter方法,该方法仅包含:

print_r($_POST);
var_dump($this->input->post('correct_answer'));

正如您所看到的,肯定会检查该复选框。它也会在视觉上进行检查(IE框中有一个勾号)。

当我提交表单时,它会通过jquery检查脚本。如果全部通过,jquery提交表单。

在我提交表单之前,我使用以下内容记录复选复选框的值:

console.log($(".input-group input[name^='correct_answer']:checked").val());

正如您所料,输出A或任何答案。所以我确定已经勾选了复选框。

但是,Codeigniter输出以下内容:

Array ( [quiz_question] => What letter precedes A? [answer] => Array ( [0] => A ) )
bool(false)

array来自原始$_POST数据。 bool(false)输出$this->input->post('correct_answer');

正如您所看到的,correct_answer的复选框值甚至没有显示在原始$_POST数据中。

我无法理解我做错了什么。当我创建一个新问题时,我有一个相同的形式,这完全正常。

任何人都可以看到任何明显的错误吗?或者我做错了什么? 非常感谢

修改

这是我迄今为止所尝试过的:

  • 删除复选框周围的所有span元素,只留下文本输入和复选框输入 - 发布数据中仍然没有复选框值
  • 删除了复选框名称周围的方括号 - 无帖子数据
  • 重命名了复选框名称,没有发布数据
  • 直接提交表单,而不是先通过jquery检查,没有发布数据
  • 将其从复选框更改为单选按钮 - 无帖子数据
  • 将其从复选框更改为文字, - 作品,在收音机或复选框时无效

1 个答案:

答案 0 :(得分:2)

您的HTML代码无效 - 您不能将form元素作为table的子代。

将整个表格放入表格中,或将整个表格放在td元素中 - 这些是您唯一的两个选项.¹

针对错误HTML的不同纠错算法很可能解释了为什么您看到当前代码在某个浏览器中工作,而在其他浏览器中却没有。


¹好吧,如果你想坚持一张桌子 - 正如你在评论中所说的那样,离开使用桌子也解决了结构问题。