我正在使用FormRequest来验证数据。我知道这个问题问了很多次,社会人士也曾尝试用很多方法解决这个问题,但没有一个解决了我的问题。参考链接附呈。
我的问题描述
我已经完成了复杂的表单,其中一些HTML是从我的JQuery代码中生成的。当Jquery代码不填充表单时,后端验证和旧值可以正常工作,但是当表单中出现JQuery并提交表单时,旧值和验证错误不起作用。图像是附加的,以更多的解释。
步骤1单击支付条件

步骤2狭缝项和确认

步骤3在从JQuery填充的支付百分比输入字段中添加值。

FormRequest
class AbcRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'payment_term' => ['required'],
'payment_percent' => ['required'],
'other_info' => ['required'],
];
}
}web.php
Route::group(['middleware' => ['auth', 'approved']], function () {
Route::post('/abc/store', 'AbcController@store')
->name('abc.store');
});叶片
<form method="post" action="{{ url('/abc/store') }}"
enctype="multipart/form-data">
@csrf
<input type="text" name="payment_term" class="form-control"
value="{{ old('payment_term') }}">
@error('payment_term')
<div class="backend-error"> {{ $message }} </div>
@enderror
</form>我到目前为止尝试过的
社区链接
控制器的代码来自社区
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'payment_term' => ['required'],
'payment_percent' => ['required'],
'other_info' => ['required'],
]);
if ($validator->fails()):
return redirect()->back()
->withErrors($validator)
->withInput();
endif;
}发布于 2021-11-24 21:16:48
免责声明:如果我没有正确理解你的问题,我很抱歉,我尽力了。
如果在客户端使用jQuery创建一些HTML输入,Laravel将无法将任何旧的输入值或验证错误插入到HTML中,因为在‘re服务器上呈现时您所引用的DOM元素根本不存在。
本质上,我可以想出两种解决这个问题的方法:让Laravel呈现那些HTML元素并使用CSS隐藏它们。那么你们的JavaScript可以(有条件地?)通过操作CSS显示以前隐藏的元素。另一种选择是在内联脚本标记中模板旧的输入值和验证错误,这些JavaScript变量可以由jQuery代码解析,例如在JSON中对这些值进行编码和解码。
https://stackoverflow.com/questions/70016413
复制相似问题