关于表单中数组提交后验证错误显示问题
view的代码:<ul class="Add">
<li>
<p class="Text"><input type="text" name="qname[]" placeholder="请输入被查询人姓名" value="<?php echo set_value('qname[]');?>"/><em class="jia"></em><?php echo form_error('qname[]'); ?></p>
<p class="Text"><input type="text" name="idcard[]" placeholder="请输入证件号" value="<?php echo set_value('idcard[]');?>"/><?php echo form_error('idcard[]'); ?></p>
</li>
<li>
<p class="Text"><input type="text" name="qname[]" placeholder="请输入被查询人姓名" value="<?php echo set_value('qname[]');?>"/><em class="jia on"></em><?php echo form_error('qname[]'); ?></p>
<p class="Text"><input type="text" name="idcard[]" placeholder="请输入证件号" value="<?php echo set_value('idcard[]');?>"/><?php echo form_error('idcard[]'); ?></p>
</li>
</ul>
li中name="qname[]"和name="idcard[]"是重复的,可以更多,也就是说界面中有js效果可以添加删除li
controller的代码:
$this->form_validation->set_rules('qname[]', '被查询人姓名', 'trim|required');
$this->form_validation->set_rules('idcard[]', '证件号码', 'trim|required|max_length|min_length');
var_dump($this->input->post('qname[]'));
var_dump($this->input->post('idcard[]'));
首先,controller是可以正确接收qname[]和idcard[]数据的,但是,如果用户输入的信息是错误的,特别是第二个li中输入的数据是错误的,那么在第一个li中也会显示错误的信息,这不是我想要的,我想要的结果是,哪个qname[]输入错误,就在哪个qname[]后面显示错误内容,idcard[]也是一样
所以,度了2天了,都没找到跟我问题差不多的,郁闷!新手,求解决方法。
参见这里:
表单验证类-使用数组作为域名称
http://codeigniter.org.cn/user_guide/libraries/form_validation.html#using-arrays-as-field-names
就是说,你可以需要设置一个“别名”
你也可以使用多维数组作为域的名称,例如:
<input type="text" name="options" value="" size="50" />
甚至:
<input type="text" name="sports" value="" size="50" />
和上面的例子一样,你必须在辅助函数中使用完全一样的数组名:
<?php echo form_error('sports'); ?>
-----------------------------------
像你程序中的,
<input type="text" name="qname[]" placeholder="请输入被查询人姓名" value="<?php echo set_value('qname[]');?>"/>
可以将:
name="qname[]"
改为
name="qname"
或者
name="qname"
错误调用时,
用
<?php echo form_error('qname'); ?>
或
<?php echo form_error('qname'); ?>
-----------------------------------
另一种方法是,使用 jquery:
$("input").each(function(){
console.log($(this).attr('name') + $(this).val());
});
这个可以遍历到所有文本框,在里面用 JS 加拦截,加判断。
页:
[1]