我的数据库中有患者信息,现在我想以另一种形式访问一个人的信息。当我输入患者的ID时,需要自动填写/加载患者姓名字段。我也有我的患者模型。
这是来自...
<form method="post" class="" action="" >
@csrf
<div class="input-field col s3">
<input name="patient_id" id="id" type="text" class="validate">
<label class="active" for="id">Patient ID</label>
</div>
<div class="input-field col s9">
<input name="patient_name" id="name" type="text" class="validate">
<label class="active" for="name">Patient Name</label>
</div>
<div class="input-field col s12">
<select name="room">
<option value="" disabled selected>Select Room</option>
<option value="2001">ROOM 2001 - Non AC - 500</option>
<option value="4001">ROOM 4001 - AC -800</option>
<option value="301">CABIN 301 - AC - 1700</option>
</select>
</div>
<div class="input-field col s12 text-center">
<button class="btn waves-effect waves-light" type="submit" name="action">Assign Room</button>
</div>
</form>
答案 0 :(得分:0)
您可以
在刀片模板中创建json对象,如果存在特殊字符,可能会有些混乱。另外,如果您有大量记录,我也不认为这是一个好的解决方案。
我会使用一个库,例如https://select2.org/,您将在这里找到https://select2.org/data-sources/ajax ...我个人使用的是这个https://semantic-ui.com/modules/search.html#/examples ...但是我认为select2更直接。
在https://select2.org/data-sources/ajax的底部,您可以看到在查询服务器时如何传递具有完整数据的对象。
由于名称仅用于搜索ID(我假设)
您还可以调整控制器,使其显示在CONCAT(id,name)中,以便用户键入ID或名称并找到患者。
答案 1 :(得分:0)
通过view
将患者详细信息传递到compact
,并在输入字段中相应地使用patient
集合的值。
控制器
public function edit($id){
$patient = Patient::find($id);
return view('patients.edit, compact('patient'))
}
在视图中
<input value="{{ old('name') ? old('name') : $patient->name }}" name="name" type="text" class="form-control" required>
答案 2 :(得分:0)
您可以尝试一下。
在输入字段中输入患者ID时执行JavaScript:
这是示例-> https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_ev_oninput
HTML
<input name="patient_id" id="id" type="text" class="validate" oninput="myFunction()">
JavaScript
function myFunction() {
var p_id = document.getElementById("id").value;
$.ajax({
url: '{{URL::to('get_patient_name')}}'+ '/'+p_id,
type: "get",
success: function (data) {
}
});
}
现在创建一条路线:
Route::get('get_patient_name/{p_id}', 'PatientController@getPatientName'});
在控制器中获取患者的姓名
public function getPatientName($id)
{
return ModelName::where('patient_id',$id)->value('patient_name');
}
最后,在名称输入字段中打印患者姓名。
在javascript成功函数中
success: function (data) {
$('#name').val(data);
}
答案 3 :(得分:0)
<input name="patient_id" onkeydown="getInfo(this)" id="id" type="text" class="validate">
<script type="text/javascript">
function getInfo(input){
var xhr = new XMLHttpRequest();
xhr.open("GET", 'your/url/to/get/info/from/db/'+input.value, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
xhr.onload = function() {
var data = JSON.parse(this.responseText);
document.getElementById('name').value = data.name;
document.getElementById('room').innerHTML= '<option value="'+
data.room +'">'+data.room +'</option>';
data.name
}}
答案 4 :(得分:0)
如果您想不使用jquery进行操作,那么这里是香草js
不要忘记更改请求网址!
document.querySelector("#id").addEventListener("change", function () {
let xml = new XMLHttpRequest(),
token = document.querySelector("input[name=_token]").value,
id = document.querySelector("#id").value,
name = document.querySelector("#name");
xml.open("get", "get/" + id); // change url
xml.setRequestHeader("X-CSRF-TOKEN", token);
xml.onreadystatechange = function () {
if (xml.readyState === 4) {
var response = JSON.parse(xml.responseText);
if (xml.status === 200 ) {
name.value = response
} else {
console.log('something bad happened');
}
}
};
xml.send()
})
然后在您的控制器中找到患者并发回
public function getPatient($id){
$patient = Patient::find($id);
return response()->json($patient->name);
}