我试图在Codeigniter中使用ajax进行简单的表单验证,它有一个文本字段和3个单选按钮... textfield的表单错误显示错误,但单选按钮的错误没有显示...
请帮助......
<form action="<?php echo base_url('register') ?>" method="POST" id="regID">
<div class="form-field">
<input type="radio" name="cars" value="BMW">BMW
<input type="radio" name="cars" value="Ferrari">Ferrari
<input type="radio" name="cars" value="Audi">Audi
</div>
<div class="form-field">
<input type="text" name="name" id="name">
</div>
<input type="submit" id="submitter">
</form>
<script type="text/javascript">
$("#regID").submit(function(){
var form = $(this);
$.ajax({
url : form.attr('action'),
type : form.attr('method'),
data : form.serialize(),
dataType : 'json',
success : function(response){
if(response.success == true)
{
alert('DONE');
}
else
{
$.each(response.messages, function(index, value){
var element = $('#'+index);
$(element)
.closest('.form-field')
.find('.text-danger').remove();
$(element).after(value);
});
}
}
});
return false;
});
</script>
public function register()
{
$this->form_validation->set_rules('name', 'Name', 'required',
array(
'required' => 'Name Required',
)
);
$this->form_validation->set_rules('cars', 'Cars', 'required',
array(
'required' => 'Cars Required',
)
);
$this->form_validation->set_error_delimiters('<p class="text-danger">* ', '</p>');
if($this->form_validation->run() == TRUE)
{
$validator['success'] = true;
}
else
{
$validator['success'] = false;
foreach ($_POST as $key => $value)
{
$validator['messages'][$key] = form_error($key);
}
}
echo json_encode($validator);
}
当我这样做时,我只能显示文本字段的错误,而不是单选按钮。如果所有单选按钮都未选中,我想运行验证错误....
我该怎么做...请帮忙......
答案 0 :(得分:0)
我在最后执行了你的代码。我找到的唯一问题是我没有在$ _POST数组中获得汽车键。如果我们没有在数组中获取此键,那么此部分的错误验证如何工作:
else
{
$validator['success'] = false;
foreach ($_POST as $key => $value)
{
$validator['messages'][$key] = form_error($key);
}
}
您正在使用$ _POST数组且它没有汽车键init
解决方案:默认选择任意一个无线电输入。如:
<form action="<?php echo base_url('register') ?>" method="POST" id="regID">
<div class="form-field">
<input type="radio" checked="checked" name="cars" value="BMW">BMW
<input type="radio" name="cars" value="Ferrari">Ferrari
<input type="radio" name="cars" value="Audi">Audi
</div>
<div class="form-field">
<input type="text" name="name" id="name">
</div>
<input type="submit" id="submitter">
</form>
将任何选项设置为默认选项后,您无需检查所需的验证。否则,你可以使用其他验证规则。
如果您遇到任何问题,请告诉我。