【问题标题】:CodeIgniter checking values of checkboxCodeIgniter 检查复选框的值
【发布时间】:2014-06-25 07:35:38
【问题描述】:

我在检查 CodeIgniter 中复选框的值时遇到问题。我正在尝试实施此处找到的解决方案:Codeigniter checking checkbox value。无论是否选中复选框,以下代码永远不会评估为真。如果我将 value="1" 添加到输入中,它总是评估为 true。

我的看法:

....
<input name="Tuesday" id="Tuesday" type="checkbox" />
....

<script type="text/javascript">
.on('finished', function(e) {
    var form_data = {
        Tuesday: $('#Tuesday').val(),
        ajax: '1'
    };

    $.ajax({
        url: "<?php echo site_url('opportunity/create_opportunity'); ?>",
        type: 'POST',
        data: form_data,
        dataType: 'json',
        cache: false
    });
})
</script>

我的控制器:

function create_opportunity() {

     if($this->input->post('ajax')) {
        $checked = $this->input->post('Tuesday');

        if((int) $checked == 1) {
            $Tuesday = array(
                'Week_Day_Id' => 2,
                'Opportunity_Id' => 18,
                'Preferred' => $checked
            );
        }

        $this->ion_auth_model->create_opportunity($Opportunity, $Tuesday);
    }
}

感谢您提供的任何帮助。

【问题讨论】:

  • var_dump($checked) 并显示输出。

标签: php jquery codeigniter ion-auth


【解决方案1】:

在您的 AJAX 中,您使用的是 $('#Tuesday').val(),它将在您的 HTML 中查找 value 属性。由于 value 属性是空的,它可能会发送空。

解决方案是使用$('#Tuesday').is(':checked'),它将返回一个布尔值。

在 PHP 中只需使用 if ($checked == TRUE)

【讨论】:

  • 感谢您的快速回复。在我的控制器中更新 AJAX 和 if 语句后,它总是评估为真。
  • 您可以添加var_dump($checked) 并显示确切的输出吗?看起来我们遗漏了一些微不足道的东西。
  • 由于某种原因,var_dump() 在我的日志文件中返回 null。但是,我可以让它工作if ($checked == 'true')。看起来我的变量类型是字符串?
  • var_dump($checked)的结果是string(4) "true"
  • 谢谢。似乎任何字符串都被视为真实。即使您使用 == 来确保非严格模式。 Here 对您的问题的详细解释和解决方案。老实说,我对此一无所知。虽然我已经处理过数百种这样的表格,但想知道为什么我从来没有遇到过。
【解决方案2】:

看起来你只检查值,我实际上会检查它是否被检查或不使用 jquery 并发送该值。所以不要这样:

.on('finished', function(e) {
var form_data = {
    Tuesday: $('#Tuesday').val(),
    ajax: '1'
};

我会这样做:

.on('finished', function(e) {
var form_data = {
    Tuesday: $('#Tuesday').prop('checked') // this should send a true or false value
    ajax: '1'
};

【讨论】:

  • 我使用$('#Tuesday').prop('checked')得到与上述相同的结果
猜你喜欢
  • 2013-09-30
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多