获取复选框组值

时间:2012-03-07 18:46:39

标签: forms codeigniter

这让我真的很香蕉。它简单易行,但我无法弄清楚它有什么问题。

我想在我的控制器中填充我的复选框值(用于测试目的)。

这是我的表格。

<a href='#' name='submitForm'>submit the form</a>   
//I have jquery attached to this tag and will submit the form when user clicks it

echo form_open('test/show');

echo form_checkbox('checkbox[]','value1');
echo form_checkbox('checkbox[]','value2');
echo form_checkbox('checkbox[]','value3');
echo form_checkbox('checkbox[]','value4');

echo "<input type='text' name='text1' value='ddd'>";

echo form_close();


//My controller test

public function show(){

$data1=$this->input->post('text1');  
//I can get text1 value from input box

$data2=$this->input->post('checkbox');  
//it keeps giving me undefined index 'checkbox'

$data3=$_POST['checkbox'];
//same error message
//WTH is going on here!!!!!

}

请帮忙。这件事让我疯了!感谢。

更新 谢谢您的帮助。更准确地说,我的提交按钮是<a>标记,位于form标记之外。看来我必须在<a>标记中加入form标记才能使其有效。真的吗?

1 个答案:

答案 0 :(得分:2)

如果未选中该复选框,则复选框将不会提交任何数据,因为它们不被视为成功(as per the w3c specification here

如果你真的打勾并提交,它会起作用 - 事实上它确实如此,我刚刚测试过它。

您需要在isset()函数中包含对$_POST的调用。

if( isset( $_POST['checkbox'] ) ) {}

调用$this->input->post('checkbox')不应该为您提供未定义的索引错误,因为该方法处理此可能性。 Input::post()方法返回false或复选框的值。

编辑 -

在回答您对问题的修改时,您必须使用input类型的元素并设置type属性,以便在不使用Javascript等的情况下提交表单数据。按钮必须位于您要提交的<form></form>内。

<input type="submit" value="Submit">

type="submit"会导致浏览器在发生提交事件时发送数据。如果您希望使用另一个元素内部或外部的表单来执行此操作,您需要使用Javascript。但是,这可以基于每个浏览器/用户禁用,因此不可靠。

// Standard Javascript
<form name="myform"...
<a onclick="javascript:document.myform.submit();" href="javascript:void(0)">Submit</a>

// jQuery
$('#my-a-tag-submit-button').live( 'click', function() {
    $('#my-form').submit();
}