6

我有一个带有选择输入的表单,验证很好,但是失败时选择字段不会填充旧值 这是我的选择字段

  <div class="control-group">
   <label class="control-label">Gender :</label>
    <div class="controls">
        <select  name="gender" value= "{{ Input::old('gender') }}">
            <option>Select</option>

                <option value="M">Male</option>
                <option value="F">Female</option>
        </select>
    </div>
</div> 

我该如何解决这个问题?

4

5 回答 5

10

如果你不想使用 Laravel Form 构建,你需要这样做:

 <div class="control-group">
   <label class="control-label">Gender :</label>
    <div class="controls">
        <select  name="gender">
            <option>Select</option>

                <option value="M" @if (Input::old('gender') == 'M') selected="selected" @endif>Male</option>
                <option value="F" @if (Input::old('gender') == 'F') selected="selected" @endif>Female</option>
        </select>
    </div>
</div> 
于 2014-10-03T05:52:27.417 回答
3

我个人认为这段代码更干净。这里没有对错之分,我可以理解为什么有些人更喜欢 Laravel @if @endif 语句,我只是觉得它们在视觉上看起来太令人不安。

<option {{ old('gender')=='male' ? 'selected="selected"' : '' }}>Test option</option>
于 2016-10-25T17:12:26.263 回答
1

这是由于 HTML 选择元素。

如果您想为 select 元素分配一些默认选项值,请为该特定选项使用属性 selected="selected" ,否则默认情况下它将显示第一个选项值。

<select  name="gender">
    <option>Select</option>
        <option value="M" @if (Input::old('gender') == 'M') selected="selected" @endif>Male</option>
        <option value="F" @if (Input::old('gender') == 'F') selected="selected" @endif>Female</option>
</select>
于 2014-10-03T05:58:36.273 回答
0

我会推荐使用Laravel Collective包。

{!! Form::label('gender', 'Gender', ['class' => 'control-label']) !!}
{!! Form::select('gender',
    ['M' => 'Male', 'F' => 'Female'],
    'F', //set default value (or null)
    ['class' => 'form-control', 'required' => true,]
) !!}

它处理旧值,而不使用丑陋的 if-else 注入每个选择值。

于 2018-10-10T20:13:02.533 回答
0

我就是这样做的,非常有活力。

<select id="gender" name="gender">
    <option>Select</option>
        <option value="M">Male</option>
        <option value="F">Female</option>
</select>

<script>
    var currentGender = null;
    for(var i=0; i!=document.querySelector("#gender").querySelectorAll("option").length; i++)
    {
        currentGender = document.querySelector("#gender").querySelectorAll("option")[i];
        if(currentGender.getAttribute("value") == "{{ old("gender") }}")
        {
            currentGender.setAttribute("selected","selected");
        }
    }
</script>
于 2017-05-10T20:54:00.460 回答