Laravel ajax验证不显示所有字段
laravel ajax validation not showing for all fields
我使用jquery ajax验证。问题是,仅对表单的某些字段显示验证,而对其他字段不显示验证。
jQuery(document).ready(function()
{
jQuery('form#inline-validate').submit(function()
{
jQuery.ajax({
url: "http://localhost:8080/insur_docs/store",
type: "post",
data: jQuery('form#inline-validate').serialize(),
datatype: "json",
beforeSend: function()
{
jQuery('#ajax-loading').show();
jQuery(".validation-error-inline").hide();
}
})
.done(function(data)
{
if (data.validation_failed === 1)
{
var arr = data.errors;
jQuery.each(arr, function(index, value)
{
if (value.length !== 0)
{
jQuery("#" + index).after('<span class="text-error validation-error-inline">' + value + '</span>');
}
});
jQuery('#ajax-loading').hide();
}
})
.fail(function(jqXHR, ajaxOptions, thrownError)
{
alert('No response from server');
});
return false;
});
});
insur_docs_controller.blade.php
<div id="div-1" class="body">
{{ Form::open(array('url' => 'insur_docs/store', 'class'=>'form-horizontal','id'=>'inline-validate')) }}
<div class="form-group">
{{ Form::label('ownership_cert', 'Ownership Certificate*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Form::select('ownership_cert', array('' => '', '1' => 'Yes', '0' => 'No'),Input::old('ownership_cert'), array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('authoriz', 'Authorization*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Helpers'Helper::date('authoriz', Input::old('authoriz') , array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('drive_permis', 'Drive Permission*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Form::select('drive_permis', array('' => '', '1' => 'Active', '0' => 'Not active'), Input::old('drive_permis'), array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('sgs', 'SGS*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Helpers'Helper::date('sgs', Input::old('sgs') , array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('tpl', 'TPL*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Helpers'Helper::date('tpl', Input::old('tpl') , array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('kasko', 'Kasko*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Helpers'Helper::date('kasko', Input::old('kasko') , array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('inter_permis', 'International Permission*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Helpers'Helper::date('inter_permis', Input::old('inter_permis') , array(
'class' => 'form-control'))
}}
</div>
</div>
<div class="form-group">
{{ Form::label('car', 'Car*', array('class'=>'control-label col-lg-4')) }}
<div class="col-lg-8">
{{ Form::select('car', $cars, Input::old('car'), array(
'data-validation-error-msg' => 'You did not enter a valid car',
'class' => 'form-control'))
}}<br/>
@if($errors->count() > 0)
<div class="alert alert-danger">
<p>The following errors have occurred:</p><br/>
@foreach($errors->all() as $message)
{{ Helpers'Helper::macro($message) }}<br/>
@endforeach
</div>
@endif
</div>
</div>
{{ Form::submit('Save', array('class' => 'btn btn-success btn-line')) }}
<input type="button" value="Back" class="btn btn-danger btn-line" onClick="history.go(-1);
return true;">
{{ Form::close() }}
{{ HTML::script('assets/js/jquery.validate-form.js') }}
</div>
因此验证只显示ownership_cert和驱动器许可。其他领域则不然。我已经为date创建了一个函数,它是:
public static function date($name, $value = null, $options = array()) {
$input = '<input type="date" name="' . $name . '" value="' . $value . '"';
foreach ($options as $key => $value) {
$input .= ' ' . $key . '="' . $value . '"';
}
$input .= '>';
return $input;
}
这个可能有问题吗?
试试这个:
jQuery(document).ready(function()
{
jQuery('form').submit(function()
{
var url = $(this).attr("action");
jQuery.ajax({
url: url,
type: "post",
data: jQuery('form').serialize(),
datatype: "json",
beforeSend: function()
{
jQuery('#ajax-loading').show();
jQuery(".validation-error-inline").hide();
}
})
.done(function(data)
{
$('#validation-div').empty()
if (data.validation_failed === 1)
{
var arr = data.errors;
jQuery.each(arr, function(index, value)
{
if (value.length !== 0)
{
$("#validation-div").addClass('alert alert-danger');
document.getElementById("validation-div").innerHTML += '<span class="glyphicon glyphicon-warning-sign"></span>' + value + '<br/>';
}
});
jQuery('#ajax-loading').hide();
}
else {
window.location = data.redirect_to;
}
})
.fail(function(jqXHR, ajaxOptions, thrownError)
{
alert('No response from server');
});
return false;
});
});
我在我的项目中应用了以下解决方案并工作良好。请检查。
您需要在控制器中添加以下代码:
$validator = Validator::make($input, $rules, $messages);
if ($validator->fails()) {
$errors = $validator->errors()->getMessages();
$arr = array("status" => 400, "msg" => $errors, "result" => array());
}
错误=美元验证器->错误()-> getMessages (); getMessages ();函数将给你所有的错误信息与你的输入名称的关键。通过使用输入名称键,您可以在输入下打印特定的错误信息。
index.blade.php
<div class="form-group m-form__group">
<label>
Name<span class="text text-danger">*</span>
</label>
<input type="text" class="form-control m-input" name="name" placeholder="Enter user name" @if(isset($data)) value="{{$data->name}}" @endif />
<span class="error_msg" id="error_name"></span>
</div>
<div class="form-group m-form__group">
<label>
Email<span class="text text-danger">*</span>
</label>
<input type="email" class="form-control m-input" name="email" placeholder="Enter email" @if(isset($data)) value="{{$data->email}}" @endif />
<span class="error_msg" id="error_email"></span>
</div>
你的custom.js文件
$.ajax({
type: "POST",
url: url,
data: fdata,
headers: {
'X_CSRF_TOKEN': '{{ csrf_token() }}',
},
contentType: false,
processData: false,
"success":function (data) {
var message = data.msg;
jQuery.each(message, function(key, value){
jQuery('#error_'+key).html(value[0]);
});
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Something went wrong. Please try again.");
//unload();
}
});
相关文章:
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- 根据页面加载时的单选按钮选择显示某些字段
- 如果选择单选按钮,则显示字段
- 如何在html中将密码字段显示为秒后的星号
- 提交表单时,显示或识别隐藏的必填字段并将其集中
- 仅当选择了特定选项时才显示输入字段
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 使用SAPUI5中的“文本”字段显示正确的“日期”
- jQuery Mobile根据选择字段显示/隐藏表单输入
- 使用JS或Jquery-是否可以有一个只读字段,该字段显示有掩码,但在复制时不显示掩码值
- 无法根据下拉列表或输入字段显示表中的行数
- 当我们双击输入字段时,我不希望输入字段显示已经输入的数据.我该怎么办呢?
- 字段显示为浏览器自动填充,使用js访问时为空白
- 如何在密码字段显示4位数字
- 使用CSS和Jquery使字段显示
- jQuery显示/隐藏选项选择字段显示框,我试图显示在所有其他选项
- 用javascript从上传文件字段显示文件名
- 只在上传字段显示文件名
- 替换输入字段's显示