我有一个表单,它的字段动态添加如下:
function addFieldRow() {
$('.form-container').append('
<div><input type="text" name="name[1]"></div>
<div>
<select name="choice[1]">
<option value="red">red</option>
// . . .
</select>
</div>
// . . .
');
}
然后,我使用声明的数组 form_validation 规则将这些传递给其各自的 CodeIgniter 控制器:
$this->form_validation->set_rules('name[]', 'text field', 'required');
// . . . other fields' rules
问题是,如果任何动态添加的表单有错误,这些在视图加载期间就会消失。我想知道如何在验证运行后保留动态添加的表单字段并出现错误:
if ($this->form_validation->run() == FALSE) {
// do stuff to preserve the dynamically created fields to show their errors
$this->load->view('user_addresses_view');
}
更好的解决方案
我找到了通过使用ajax
连接到 CodeIgniter 框架中表单的相应控制器来保留这些动态添加的元素的解决方案。这种方法可以:
- 在不刷新页面的情况下进行客户端和服务器端验证
- 由于页面没有刷新,所有这些动态添加的表单元素都不会消失!
james246的解决方案