Laravel-从下拉列表中选择值后自动填充输入

Posted

技术标签:

【中文标题】Laravel-从下拉列表中选择值后自动填充输入【英文标题】:Laravel- Auto fill input after selecting value from dropdown 【发布时间】:2020-01-19 02:32:53 【问题描述】:

选择下拉列表后如何进行自动填充。我不太擅长 js 或 ajax。 当用户选择 doc_no 时,必须填写 rev_no 和 title 字段。谢谢!

查看


 <div class="form-group">
!! Form::label('text', 'Doc No', ['class' => 'col-lg-3 control-label']) !!
<div class="col-lg-10">
<select name="docNo" id="docNo" class="form-control" style="width:250px">

@foreach ($soplists as $soplist)
<option value=" $soplist->id "> $soplist->doc_no </option>
@endforeach
</select>
</div>
</div>



<input type="hidden" name="carType" value="Internal Audit" class="form-control">

<div class="form-group">
!! Form::label('text', "Rev No", ['class' => 'col-lg-5 control-label']) !!
<div class="col-lg-5">
<input type="text" class="form-control" id="rev" />

</div>
</div>


<div class="form-group">
!! Form::label('text', "Title", ['class' => 'col-lg-5 control-label']) !!
<div class="col-lg-10">
<input type="text" class="form-control" id="title" />

</div>


<script>
    $('#docNo').change(function() 
        var id = $(this).val();
        var url = ' route("getDetails", ":id") ';
        url = url.replace(':id', id);

        $.ajax(
            url: url,
            type: 'get',
            dataType: 'json',
            success: function(response) 
                if (response != null) 
                    $('#rev').val(response.rev_no);
                    $('#title').val(response.title);
                
            
        );
    );
</script>

控制器 ---php

   public function getDetails($id = 0)

    $data = sopList::where('doc_no', $id)->first();
    echo json_encode($data);
    exit;


路线


'Route::get('get/details/id', 'internalAuditController@getDetails')->name('getDetails');'

数据库 sop_list 表图片链接

https://ibb.co/SwkJhLc

下拉和输入图片

https://ibb.co/0VN3Z2y

网络标签

https://ibb.co/56w5BLD

【问题讨论】:

你尝试过的。显示一些代码。 @BhavikKalariya 你好,我刚刚更新了我的问题! 输入字段将填写什么值?? @zahidhasanemon 在选择 doc_no 后输入必须填写 rev_no 和标题 嗯,我的意思是值从哪里来??数据库?? 【参考方案1】:

web.php文件中添加路由:

Route::get('get/details/id', 'YourController@getDetails')->name('getDetails');

控制器功能:

public function getDetails($id = 0)

    $data = sopList::where('doc_no',$id)->first();
    return response()->json($data);

并在查看脚本:

$('#docNo').change(function()
    var id = $(this).val();
    var url = ' route("getDetails", ":id") ';
    url = url.replace(':id', id);

    $.ajax(
        url: url,
        type: 'get',
        dataType: 'json',
        success: function(response)
            if(response != null)
                $('#rev').val(response.rev_no);
                $('#title').val(response.title);
            
        
    );
);

确保将 ID revtitle 分别添加到 revtitle 输入字段。

【讨论】:

谢谢兄弟,但还是不行。我已经用你的代码更新了我的问题。你能检查是否有任何错误。 对我来说似乎没问题。您可以从浏览器控制台的网络选项卡检查您的 ajax 请求是否正常工作吗?? 单击一个并检查响应控制器返回的内容。 我不太了解这件事。我还有其他方法可以解决这个问题。 你必须学习一些东西来解决你的问题。尝试学习如何使用浏览器控制台来处理 ajax 请求。 :)【参考方案2】:

您可以在 docNo 上添加 onChange 方法,然后调用 do ajax 调用以获取 rev_no 和标题并通过 document.getElementById() 更新内容

【讨论】:

【参考方案3】:

你必须做出一个返回你需要的东西的溃败 例如

 /**
 * @return \Illuminate\Http\JsonResponse
 */
public function getCategories()

    $category = Category::where('_id', request()->get('_id'))
        ->select(['name', '_id'])->first();

    return response()->json($category);

然后在使用 ajax 更改您的选择框时调用它,并在您想要的任何地方显示它 像这个例子:

$("#docNo").change(function ()     
 $.ajax(
            url: " route('getCategories') ",
            type: 'POST',
            data: 
                _token: " csrf_token() ",
                _id: $(this).val()
            ,
            success: function (data) 
                 var newOption = '';
                    $.each(data, function (k, category) 
                        newOption += '<option value="' + category.id +                         '">' + category.name + '</option>';
                    );

                    $('#parent').append(newOption);
            ,
            error: function (error) 
                console.log(error);
            
        );
        );

【讨论】:

嘿,视图中的选择怎么样?我需要更换什么吗?谢谢 我的代码只是一个示例,您必须将其更改为您想要的,但基础是相同的。你需要一个 rout 和 ajax 调用来改变你的选择

以上是关于Laravel-从下拉列表中选择值后自动填充输入的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel Jetstream 注册中添加填充的选择下拉列表

从一个下拉列表中选择一个选项会填充其他输入字段

输入是选择/下拉/自动完成,但也允许用户输入值 laravel

laravel - 基于先前选择的动态下拉列表

基于 Vue JS 中的选择下拉菜单自动填充输入

Laravel 下拉列表