在 laravel 中显示选定下拉列表中的值

Posted

技术标签:

【中文标题】在 laravel 中显示选定下拉列表中的值【英文标题】:Show value from selected dropdown in laravel 【发布时间】:2021-07-13 08:25:51 【问题描述】:

我想从下拉菜单中显示所选收件人姓名的详细地址。因此,如果我选择地址 A,它将显示地址 A 的详细信息。 我已经在处理代码,但问题是它没有显示正确的值,而是显示了数据库中的最后一条记录。代码如下:

刀片

<select class="address-detail form-control" id="address" name="address_detail" data-target=".detail-info-address">
    <option value="option_select">Select Address</option>
        @foreach($addresses as $address)
            <option value="$address->id"  data-show=".info-address">$address->recipient_name
            </option>
        @endforeach
</select>

<div class="detail-info-address">
    <div class="info-address hide text-left">
        <p>Recipient Name: $address->recipient_name</p>
        <p>Contact Number: $address->contact_number</p>
        <p>Address: $address->address</p>
        <p>Address Note (optional): $address->address_note</p>
        <p>Post Code: $address->post_code</p>
        <p>Province: $address->province</p>
        <p>City: $address->city</p>
        <p>District: $address->district</p>
        <br>
    </div>
</div>

控制器

public function buynow($id) 
    $addresses = Address_Delivery_Users::where('user_id', '=', Auth::user()->id)->get();

    return view('/transactions/delivery', compact('addresses'));

Javascript

<script>
    $(document).on('change', '.address-detail', function() 
        var target = $(this).data('target');
        var show = $("option:selected", this).data('show');
        $(target).children().addClass('hide');
        $(show).removeClass('hide');
    );

    $(document).ready(function()
        $('.address-detail').trigger('change');
    );
</script>

【问题讨论】:

我认为您没有选择正确的选项:$('.address-detail').find(":selected").data('show')。而在buynow函数中,$id:id的值有什么作用? 我已经尝试过了,但它不起作用,但我现在正在努力,谢谢 【参考方案1】:

您的问题是变量$address 是在foreach 循环中定义的,因此循环的最后一个元素将设置为$address

因此,您的地址块将始终包含最后一个地址元素的属性。页面初始渲染后,您无法在 php 变量 $address 中显示另一个地址。

区分服务器端的 PHP 和客户端的 JS 很重要。

您将不得不监听 select 的 change 事件并获取新数据。有两种选择。

    您向服务器发出 ajax 请求并返回地址对象并相应地设置所有字段。

    在您的 foreach 循环中,您为地址的每个属性添加一个 data- html 属性,onchange 获取所有 data- 属性并将它们插入地址块的正确字段中。

我建议使用 Vue.js 来完成这项任务。但是,如果您是新手并且没有太多经验,那么您现在可以尝试纯 JS/Jquery。

【讨论】:

好的,谢谢,我可能会使用第二个选项。

以上是关于在 laravel 中显示选定下拉列表中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5 下拉列表中检索选定选项的值?

Laravel 4 如何使用 input::old() 方法在下拉菜单中显示选定的值?

根据下拉列表中的选定值显示表单字段Angular TypeScript

如何使用jquery从dot net core mvc中的表中的下拉列表中显示选定的值

ReactJS:如何从输入字段的下拉列表中显示选定的值?

如何根据 laravel 中选定的下拉菜单显示表格内容