php - 使用 Livewire 仅选中一个复选框并取消选中其他复选框

标签 php laravel laravel-livewire

我尝试一次仅选中一个复选框,然后取消选中其他复选框,但当我想选中一个新复选框时,前一个复选框将取消选中,依此类推。

我在 Blade 中的代码:

@foreach($addressEmployer as $address)
                            <div class="col-12 col-lg-3 p-2 m-2 rounded" style="border: dashed #a1a1a1;">
                                <label for="check{{$address->id}}"></label>
                                <div class="row">
                                    <div class="col-2 mt-5">
                                        <input wire:model="addressSelected.{{$address->id}}"
                                               value="{{$address->id}}"
                                               class="form-check-input" type="checkbox"
                                               id="check{{$address->id}}">
                                    </div>
                                    <div class="col-10">
                                        <p> {{$address->province->name}} - {{$address->city->name}}</p>
                                        <p> {{$address->address}}</p>
                                        <a wire:click="setAddress({{$address->id}})" class="float-end"
                                           data-bs-toggle="modal"
                                           href="#editAddressModal"
                                           role="button">{{__('Edit')}}</a>
                                        <a wire:click="$emit('addressId',{{$address->id}})" class=" me-3 float-end"
                                           data-bs-toggle="modal"
                                           href="#deleteAddressModal"
                                           role="button">{{__('Delete')}}</a>
                                    </div>
                                </div>
                            </div>
                        @endforeach

我从数据库中读取地址并使用 foreach 显示它们,我想选择显示的地址之一。

我正在寻找解决此问题的正确方法。如果您有解决方案,谢谢。

最佳答案

当您有多个选项但希望将选择限制为单个选项时,radio buttons是你的 friend 。

如果之前选择的单选按钮没有取消选择,则表明您没有使用 name 属性对单选按钮元素进行正确分组。

这是一个简化的示例,可帮助您走上正确的道路。

组件

class AddressComponent extends Component
{
    public $addresses = Address::all();

    public $selectedAddressId;

    public function mount()
    {
        $this->addresses = Address::all();
        $this->selectedAddressId = 1;
    }

    public function render()
    {
        return view('livewire.address-component-view');
    }
}

组件 View

<div>
    @foreach ($addresses as $address)
        <div class="mt-1">
            <input type="radio" id="{{ $address->id }}" name="address" value="{{ $address->id }}" wire:model="selectedAddressId" />
            <label for="{{ $address->id }}">{{ $address->address }}</label>
        </div>
    @endforeach
    <h3>Selected Address ID: {{ $selectedAddressId }}</h3>
</div>

关于php - 使用 Livewire 仅选中一个复选框并取消选中其他复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69910360/

相关文章:

php - 提交后更改表单字段的数据

php - HTML 和 PHP 分页无法正常工作

php - 拉拉维尔 4 : DB:select returns rows ordered randomly

php - Laravel 5.2 -> 5.3 Auth::user() 返回 null

php - Laravel Livewire 组件偏移量

php - Laravel Livewire 使用重定向将变量数据从一个组件传递到另一个组件

laravel livewire 数据未显示在模态中

php - PHP中如何使用GCM模式加密?

javascript - 在此ajax表单中将加载图标放在哪里请有人告诉我吗?

php - 如何使用 Eloquent 将图像文件内容保存到 SQL 数据库中?