[英]Make a text box automatically fill depending on drop-down selection (Laravel and Javascript help!)
[英]Make a text box automatically fill depending on drop-down selection (laravel)
我是 Laravel 的新手,我只是想问当我在下拉列表中选择数据时如何填充另一个文本框。 在我的名为“booklist”的表中,我有这列“book_title”和“type_id”,它们与带有“type_id”和“book_types”列的“booktypes”表有关系
我想根据我在下拉列表中选择的书名来显示书籍类型(例如几何(标题)数学(类型))
现在我只能根据此代码在下拉列表中显示和选择所有书籍类型
<div class="form-group">
<label>Select Book</label>
<select class="form-control" name="book_id">
<option value="">-----------</option>
@foreach ($booklist as $boo)
<option value="{{$boo->book_id}}">{{ $boo->book_title }}</option>
@endforeach
</select>
</div>
我的货架控制器
public function addshelfa()
{
return view('addshelf.addtoshelfa',['booklist'=>Booklist::all()]);
}
如果选择例如 Geometry 想要在此处显示其类型:
<div class="form-group">
<label>Book Type</label>
<input value="" type="text" class="form-control" name="type_id" disabled>
</div>
为了实现这种功能,您需要添加 ajax 调用,这将是一个很长的答案。 所以,我一步一步来,这是一个粗略的照片。
第 1 步:您的 ajax 功能部分,
// meta tag add inside your html head
<meta name="csrf-token" content="{{ csrf_token() }}" />
// ajax header setup
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
/**
* change book action
*/
// you need to give id attribute to book_id field.
$(document).on('change', '#book_id', function (e) {
e.preventDefault();
var book_id = $('#book_id').val();
var route = "/book-type/set";
$.ajax({
type: 'POST',
url: route,
data: {
book_id: book_id
},
success: function (data) {
// you can check for status here
$("input[name=type_id]").val(data.book_type_id);
},
error: function(XMLHttpRequest) {
// toastr.error('Something Went Wrong !');
}
});
});
第 2 步:后端句柄部分
定义处理请求的路由,
Route::post('/book-type/set', 'YourController@bookTypeSet');
定义你的方法,
public function bookTypeSet(Request $request)
{
// this is a rough prototype you need to give your actual data from here
$bookId = $request->get('book_id');
$book = Book::findOrFail($bookId);
$bookType = $book->bookTypes;
return response()->json(['book_type_id'=>$bookType->id, 'status'=>'200']);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.