【问题标题】:How to assign variable number of checkbox values to variables in jQuery?如何将可变数量的复选框值分配给jQuery中的变量?
【发布时间】:2014-09-24 11:47:01
【问题描述】:

我有一个带有多个复选框的 HTML 表单,它们都具有相同的 class="shared"。我使用以下方法将可检查复选框的数量一次限制为 3 个,这可以按预期工作:

$(document).on('change', '.shared', function() {
    var countShared = $('.shared:checked').length;
    if(countShared > 3 && $(this).is(':checked')) {
        alert("You can only select up to 3 departments to share with.");
        $(this).prop('checked',false);
    }
});

现在我的问题如下:

我有 3 个变量,shared1、shared2 和 shared3,我想将上面选中的复选框中的值分配给这些变量。我正在寻找将第一个选中复选框的值分配给变量shared1,将第二个选中复选框的值分配给shared2 并将第三个选中复选框的值分配给shared3 的东西。

通常我会为这样的事情尝试一个 .each 循环,然后按 .shared 类进行,但我不知道如何在此处应用它,因为也可能少于 3 个或没有选中复选框,而我没有不知道是哪些。

我怎样才能意识到这一点?

【问题讨论】:

  • 你能分享你的标记代码吗?你打算如何处理 shared1、2、3 变量?
  • 我无法共享所有其余代码,因为这太多了,但我想通过 Ajax 调用传递这些变量以对数据库进行一些更新。
  • 那里有多少个可用的复选框,并且复选框有任何唯一的 id?
  • 每个复选框都有一个唯一的 ID,checkboxX,其中 X 是唯一的编号。复选框的数量各不相同,它们没有限制,因为它们是从数据库中获取的,但不应超过 10 个。

标签: jquery arrays loops checkbox


【解决方案1】:

最初将每个变量设置为false

然后,如果没有选中任何框,那么您就完成了。如果有,只需将 shared1 设置为 true。如果有两个,将 shared1 和 shared2 设置为 true,最后,如果有三个复选框,则将三个都设置为 true。

shared1 = false;
shared2 = false;
shared3 = false;
var checkedBoxes = $('.shared:checked');
if (checkedBoxes[0]) shared1 = true;
if (checkedBoxes[1]) shared2 = true;
if (checkedBoxes[2]) shared3 = true;

【讨论】:

  • 我第一次读错了,但这实际上很好用!非常感谢 - 我会尽快接受。 :)
  • 您可以使用checkedBoxes[...].checked,但没有必要这样做,因为选择器.shared:checked 只会选择选中的框(因此该值始终为真)。
【解决方案2】:

如果您在父项中拥有所有复选框元素,则可以尝试以下操作 -

$(YourSelector).index()

这将返回复选框的索引号,您可以分配给各个变量。

只需检查索引为 1 的位置并分配给 shared1 变量等等。

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2014-08-26
    • 2011-08-19
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多