[英]How to POST input field that are disabled/readonly with condition?
我试图使输入字段处于禁用状态或只读状态(如果尚未按下按钮),但是在添加使其变为禁用状态或只读状态后,我在将其发布/提交到数据库时遇到问题
<form action="{{ route('amber.timestone.home.start', $task->id) }}" method="POST" class="align-center">
{{csrf_field()}}
<td>
<input class="my-2" type="text" name="ref" value="{{ $task->ref }}"
@if(empty($task->start))
readonly
@endif
>
public function startTask($id)
{
$user = Task::find($id);
$user->start = Carbon::now();
$user->save();
return back();
}
public function endTask($id, Request $request)
{
$user = Task::find($id);
$user->end = Carbon::now();
$start = Carbon::parse($user->start);
$end = Carbon::parse($user->end);
$user->ref = request('ref');
$user->remarks = request('remarks');
$user->campaign = request('campaign');
$user->type = request('type');
$hours = $end->diffInHours($start);
$minutes = $end->diffInMinutes($start);
$seconds = $end->diffInSeconds($start);
$user->duration = $hours . ':' . $minutes . ':' . $seconds;
$user->update();
return back();
}
我尝试添加与那些具有只读条件的名称相同的隐藏名称仍然无法正常工作
禁用字段不随请求一起发布,但是您可以添加只读属性。
您可以做的另一件事是,出于UI目的禁用字段,并在下面添加具有相同名称和值的隐藏输入。
HTML是一种标记语言,它突出显示数据的语义,而不是显示数据的方式(例如,使用<strong>
使文本加粗是完全错误的方式)。 因此,您应该使用CSS定制的文本容器(主要是<div>
或<span>
)将其封装并保持只读。 然后,就像Adam abdul shakoor所建议的那样,您可以使用具有相同值的隐藏输入。 您还应该考虑使用VueJS(已经打包在Laravel中),它的数据驱动方法使这种事情变得微不足道,以保持容器和输入的内容同步。
你怎么看? 如果您有需要返回的值,请将其放在隐藏的输入字段中。 因此,也许可以使用CSS创建一个伪字段。 但是,如果您不想发送任何数据,只是为了显示它,您可能根本就不会在隐藏输入字段中包含该值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.