получить значения группы флажков - PullRequest
0 голосов
/ 07 марта 2012

Это заставило меня действительно бананы.Это так просто и легко, и все же я не могу понять, что с ним не так.

Я хочу, чтобы значение моего флажка заполнялось в моем контроллере (для целей тестирования).

Вот моя форма.

<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 Ответ

2 голосов
/ 07 марта 2012

Флажок не будет отправлять данные, если они не отмечены, поскольку они не считаются успешными ( согласно спецификации w3c здесь )

Если вы на самом деле поставите галочку и отправите заявку, она будет работать - на самом деле она работает, я только что проверил ее.

Вам нужно заключить вызовы в $_POST в функции isset().

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...