У меня есть представление с именем добровольца. Внутри волонтера_редита я использую jQuery для циклического просмотра массива идентификаторов проектов и для каждого идентификатора проекта создаю вкладку. Плагин jQuery tabs превращает каждую ссылку в неупорядоченном элементе списка в вкладку, заполненную HTML-кодом, на который указывает ссылка:
/** Print the li elements that gets turned into tabs by jQuery **/
<ul>
<?php foreach ($projects as $project): ?>
<li><a href="project_edit/<?php echo $project['id'] ?>"><?php echo $project['name'] ?></a></li>
<?php endforeach ?>
</ul>
В моем случае каждая ссылка отправляет свой идентификатор проекта в качестве параметра в представление с именем project_edit. Внутри project_edit есть форма:
<!-- Form contained within a typical tab -->
<form id="proj_form">
<label for="title">Title:</label><input type="text" value="Comm. Ag. Ext." name="title" />
<label for="project">Project:</label><input type="text" value="Agriculture" name="project"/>
...
<br/><button type="button" name="proj_submit">Update Project</button><br/>
</form>
Когда форма отправлена, я использую $this->input->post()
, чтобы получить содержимое элементов ввода формы, чтобы я мог передать их в свою базу данных:
/** I handle the form's submit and send the form contents to an 'update' method of the project_edit class **/
$(function(){
$('button[name="proj_submit"]').click(function(){
vol_params = $('#proj_form').serialize();
$.post('project_edit/update', vol_params, function(data) {
console.log(data);
});
});
});
1011 *
*
/** Inside the project_edit model **/
$data = array(
'title' => $this->input->post( 'title', true ),
'project' => $this->input->post( 'project', true ),
...
);
$this->db->update( 'projects', $data, array( 'id' => $this->input->post( 'proj_id', true ) ) );
Все это прекрасно работает на первой вкладке. Однако на каждой последующей вкладке при отправке формы содержимое first передается в $this->input->post()
. Я предполагаю, что это происходит потому, что при переключении между вкладками неактивные вкладки остаются на странице, и их свойство «display» имеет значение «none». Поэтому только первый элемент с атрибутом name, совпадающим с первым параметром $this->input->post()
, попадает в массив post (первый вход с именем = "title", первый вход с именем = "project" и т. Д.).
Как мне преодолеть это ограничение? Я бы предпочел, чтобы отправлялась только активная (отображаемая в данный момент) вкладка.