javascript - Laravel 基于另一个选择框填充选择框
问题描述
我不知道从哪里开始。我正在使用 Laravel 和 LaravelCollective 表单字段。我要做的是根据第一个包含名称script
的选择框中的选择填充第二个选择框(包含日期) 。patient
我假设它会以某种方式涉及JavaScript?
脚本模型包含一个patient_id
将其链接到患者模型的列,因此可用于将脚本日期过滤到仅患者拥有的日期。
控制器
$patients_select = Patient::orderBy('last_name', 'asc')
->get()
->pluck('full_name', 'id');
$scripts_select = Script::orderBy('prescribe_date', 'desc')
// ->where('patient_id', $patient_id)
->pluck('prescribe_date', 'id')
->map(function ($date, $key) {
return date('m/d/Y', strtotime($date));
});
刀
<div class="form-group">
{{Form::label('patient', 'Patient')}}
{{Form::select(
'patient',
$patients_select,
null,
['class' => 'form-control', 'placeholder' => 'Select a Patient']
)}}
</div><!-- /form-group -->
<div class="form-group">
{{Form::label('script', 'Script')}}
{{Form::select(
'script',
$scripts_select,
null,
['class' => 'form-control', 'placeholder' => 'Select a Script']
)}}
</div><!-- /form-group -->
解决方案
您将不得不change
在患者选择的事件上收听事件(是的,在 javascript 中)。这里至少有两种可能:
将所有“脚本”数据存储在 javascript 变量中,然后在脚本选择中填充选项。
渲染
.blade
文件中所有可能的选择并用display: none
. 根据患者选择,您将只需要显示一个脚本选择。提交表单时注意不要全部发送。
好吧,您也可以在选择后重新加载页面,但我怀疑您是否愿意这样做。;)