首页 > 解决方案 > 为什么我的表单(收音机)在 laravel 集体中默认检查最后一个元素

问题描述

我不知道为什么我的单选按钮默认选中 laravel 集合中的最后一个元素,在我的情况下,单选按钮用于选择性别,每个元素都包含代表性别的字母“L”或“P”,提前致谢,

    <div class="form-group">
      {{-- <label for="jenisKelamin" class="control-label">Jenis Kelamin</label> --}}
        {{Form::label('jenisKelamin','Jenis Kelamin',['class'=>'control-panel'])}}

        <div class="form-check">
            {{-- <label>
            <input type="radio" name="jenisKelamin" id="jenisKelamin" value="L" class="form-control" placeholder="Jenis Kelamin" >Laki-Laki</label> --}}
            {{Form::radio('jenis_kelamin','L',['class'=>'form-check-input'])}}
            <label class="form-check-label">Laki-Laki</label>
        </div>

        <div class="form-check">
            {{Form::radio('jenis_kelamin','P',['class'=>'form-check-input'])}}
            <label class="form-check-label">Perempuan</label> 
        </div>
        </div>
            @if($errors->has('jenis_kelamin'))
        <br>
        <div class="alert alert-danger">{{ $errors->first('jenis_kelamin') }}</div>

        @endif
    </div><br>

标签: phplaravel-5laravelcollective

解决方案


我假设您正在使用该laravelcollective/html软件包。当我在 Internet 浏览器中查看原始 HTML 输出时,我看到的是:

<div class="form-group">
  <label for="jenisKelamin" class="control-panel">Jenis Kelamin</label>
  <div class="form-check">
        <input checked="checked" name="jenis_kelamin" type="radio" value="L">
        <label class="form-check-label">Laki-Laki</label>
    </div>
    <div class="form-check">
        <input checked="checked" name="jenis_kelamin" type="radio" value="P">
        <label class="form-check-label">Perempuan</label> 
    </div>
</div>
</div><br>

两个无线电输入都被检查(有checked="checked")。由于两者具有相同的名称,这意味着一次只能检查一个,因此只能在屏幕上检查最后一个。

让我们看一下Form::radio函数的源代码。它可以\vendor\laravelcollective\html\src\FormBuilder.php在您的项目或Github 存储库中找到。在这里,我们看到该函数具有此标头:

public function radio($name, $value = null, $checked = null, $options = [])

似乎第三个参数应该是一个布尔值,确定检查状态,任何附加选项作为第四个参数。这也显示在文档中。

在您的代码段中,它看起来像这样:

{{Form::radio('jenis_kelamin','L', true, ['class'=>'form-check-input'])}}
{{Form::radio('jenis_kelamin','P', false, ['class'=>'form-check-input'])}}

推荐阅读