【问题标题】:Validating groups of check-boxes in jQuery验证 jQuery 中的复选框组
【发布时间】:2015-05-19 15:28:13
【问题描述】:

我正在根据每页 30 行的表中的建议生成复选框。一行可以有 0 个建议,也可能有 100 个。我想使用 jQuery 只允许用户选择一个复选框。如果他们选择了一个然后改变主意,原来的复选框将被取消选中,而新的复选框将被选中。

【问题讨论】:

  • 听起来您应该改用单选按钮。作为 UI 约定,大多数用户希望能够选中多个框,但只能选择一个单选按钮。 (但是,另一个 UI 约定是,如果您有超过六个选项,则应该使用下拉菜单。)
  • @Blazemonger 我应该写我正在使用自定义 X-editable,这就是我使用复选框的原因。当我点击一个复选框时,该复选框的值被写入数据库。我基本上需要获取每组复选框并确保只选择一个值。

标签: javascript c# jquery razor


【解决方案1】:

您要查找的是 radio 输入。

<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio" value="Test"/>Test</label>

确保一组无线电输入具有相同的名称! 给它们起不同的名称意味着您将能够选择多个无线电输入:

<label><input type="radio" name="testRadio1" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio2" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio3" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio4" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio5" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio6" value="Test"/>Test</label><br/>
<label><input type="radio" name="testRadio7" value="Test"/>Test</label>

这是不可取的。

如果你真的想要复选框,请使用以下 CSS:

input[type="radio"] {
    -webkit-appearance: checkbox; /* Chrome, Safari, Opera */
    -moz-appearance: checkbox;    /* Firefox */
    -ms-appearance: checkbox;     /* not currently supported */
}
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label><br/>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>
    <label><input type="radio" name="testRadio" value="Test"/>Test</label>

【讨论】:

    【解决方案2】:

    我同意上面的建议,但如果您不想这样做,您可以使用以下代码实现相同的效果;

    <script>
    $("input[type=checkbox]").click(function() {
        $( "input[type=checkbox]" ).prop( "checked", false );
        $(this).prop("checked", true);
    });
    </script>
    

    工作 JSFiddle http://jsfiddle.net/9kxoc2g6/1/

    【讨论】:

    • 我如何验证复选框组。每行可能有也可能没有建议。所有的建议都是相互独立的。
    • @LukeOsborne 在这种情况下,您可以为每行复选框添加一个 id。因此,使用each(),您可以检查每一行复选框,哪个复选框当前为空。我可以尝试编辑@killstreet 的答案,但如果他知道我在说什么,他可能会自己编辑。除非你想让我这么做。 :)
    • @RizkyFakkel 如果可以的话,我会很感激的,我已经工作了 13 个小时,我的眼睛都快要死了。如果一行有复选框,则在此 &lt;ul class="unstyled inline" check-box-group="@item.EntityId" &gt; 内
    • @LukeOsborne 这些行是否有任何特定的类或 ID? unstyled inline 看起来像是您可能在任何地方都使用过的非常通用的类。
    • @RizkyFakkel 我正在尝试编写一个函数来获取具有复选框Js Function 的行的所有ID 行ID 是@item.EntityId。这是使用 Razotr 自动生成的。我正在尝试在每个唯一 &lt;ul&gt; 内的复选框上应用逻辑
    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2018-09-28
    • 1970-01-01
    相关资源
    最近更新 更多