【问题标题】:Laravel checkbox inside form won't check表单内的 Laravel 复选框不会检查
【发布时间】:2016-01-26 05:17:21
【问题描述】:

我被困在 Laravel 5.2 中,试图与表单中的复选框进行交互。 当我单击它们时,它们只会亮起,但不会被检查。 似乎当我删除表单标签(或刀片标签)时,可以选中复选框,但我需要它们位于表单内以提交是否选中...... 代码位于@section('content') 中的 home.blade.php 这似乎有效:

@foreach($items as $item)
        <li>
                <input id="item" name="id" onClick="this.form.submit" type="checkbox" value="{{ $item->id }}" {{ $item->done ? 'checked' : ''}} />
                {{ $item->name }}
        </li>
@endforeach

Image of working checkboxes

但这里失败了:

@foreach($items as $item)
        <li>
            {{Form::open()}}
                <input id="item" name="id" onClick="this.form.submit" type="checkbox" value="{{ $item->id }}" {{ $item->done ? 'checked' : ''}} />
                {{ $item->name }}
            {{Form::close()}}
        </li>
@endforeach

Image checkboxes not working

感谢您的帮助!

【问题讨论】:

    标签: forms checkbox laravel-5


    【解决方案1】:

    将您的Form openForm close 标签移到foreach 之外。它创建的形式与 foreach 循环一样多。您的代码应如下所示:

    {{Form::open()}}
    @foreach($items as $item)
        <ul>
            <li>       
                <input id="item" name="id" onClick="this.form.submit" type="checkbox" value="{{ $item->id }}" {{ $item->done ? 'checked' : ''}} />
                <label for="id">{{ $item->name }}</label>
            </li>
        </ul>
    @endforeach
    {{Form::close()}}
    

    【讨论】:

    • @Sharon 尝试用&lt;ul&gt; 包裹&lt;li&gt;
    • 什么都没有改变...我已经编辑了我的帖子,添加了指向工作时和不工作时外观的图像的链接。外观不一样真的很奇怪,就像它甚至不是一个复选框。
    • 尝试将$item-&gt;name 显示为label。我已经更新了我的答案。
    • Inspect Element工具检查,框亮的时候是否勾选了复选框?或者更改Inspect Element中的勾选/取消勾选状态,看看复选框是否勾选?
    • 我终于找到了答案:它在我的 css 文件中。我忘了删除“-webkit-appearance: none”行。感谢您的所有努力!我真的觉得自己很蠢……
    【解决方案2】:

    看起来您将表单作为复选框的 onclick 事件提交。您实际上是在单击复选框后立即提交表单,并且由于表单提交给自身,因此它会以其默认状态(未选中)重新加载。当您完成单击它时,页面已重新加载并且再次未单击。

    删除表单标签时看不到这个的原因是因为事件(提交表单)不再做任何事情,因为不再有要提交的表单。

    我指的是这个有问题的属性:

    onClick="this.form.submit"
    

    【讨论】:

    • 这似乎不是问题。我已经尝试删除这部分,但没有任何改变...
    • 是否还有其他未显示的在此复选框元素上定义的 javascript onclick 事件?如果您说当您单击复选框时,您没有看到它变为选中状态(或看到它短暂闪烁以选中然后立即变回),那么该字段上肯定有一些javascript事件。我很惊讶,我上面指出的正是导致这种行为的原因。
    • 好吧,我没有看到它被检查,只是突出显示。此外,复选框的外观看起来更像是一个单选按钮,即使它被定义为一个复选框。不,没有定义其他 onclick 事件...
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2021-11-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多