【问题标题】:Disabled Checkbox is not showing as checked in jQuery禁用的复选框未在 jQuery 中显示为已选中
【发布时间】:2012-08-06 09:16:42
【问题描述】:

所有, 我有以下一点 PHP 来检查一个复选框:

<input type="checkbox" name="check_out_gear[]" id="'.$resultsetgear['gear_checkout_id'].'" value="'.$resultsetgear['gear_checkout_id'].'" class="gear_checkout_checkbox" checked disabled>

该代码工作正常,复选框被选中并被禁用。我正在检查是否使用以下 jQuery 检查了至少一个复选框:

var fields = jQuery(".gear_checkout_checkbox").serializeArray(); 
if (fields.length == 0) 
{ 
    jQuery.wl_Alert('Please select a piece of equipment that you\'re checking out!','warning','#no_answers','#workform', {sticky:false}); 
    one_selected = false;
}

当该复选框被选中并禁用时,长度始终为 0。但是,一旦我从代码中删除禁用,它的长度至少为 1。知道如何让此代码与禁用的复选框一起使用?

【问题讨论】:

  • 如果您的代码中选中了复选框,我看不到任何检查。

标签: php jquery


【解决方案1】:

serializeArray 模仿表单提交。提交表单时,不会发送禁用的元素。

请改用is(":checked")

jQuery(".gear_checkout_checkbox").is(":checked")

来自docs

.serializeArray() 方法使用标准 W3C 规则 成功控制以确定应包括哪些要素;在 特别是该元素不能被禁用,并且必须包含一个名称 属性。

【讨论】:

    【解决方案2】:

    这是禁用输入的记录行为。来自jQuery docs on .serializeArray()

    .serializeArray() 方法使用成功控制的标准 W3C 规则来确定它应该包含哪些元素;特别是元素不能被禁用,并且必须包含名称属性。

    只需使用:checked selector [jQuery docs] 检查复选框的长度,如下所示:

    if (jQuery(".gear_checkout_checkbox:checked").length === 0) 
    

    【讨论】:

      【解决方案3】:

      无论是否选中,都不会发送禁用的复选框。因此serializeArray 不会接收到它。你应该检查复选框本身是否被选中,而不是它是否会被提交。

      【讨论】:

        【解决方案4】:

        已禁用的输入将不会显示,因为它已被禁用。检查它的事实没有任何意义。

        如果您使用 jQuery 来启用和禁用复选框,您还可以使用 jQuery 在禁用复选框时设置隐藏输入的值(并在再次启用复选框时再次更改它)。然后,您可以处理隐藏的输入以及复选框并执行正确的操作。

        另一种可能性是根本不禁用复选框,而是使用 CSS 更改来指示它已被锁定并捕获 onchange 事件以防止它被修改。

        【讨论】:

          【解决方案5】:

          您可以使用 jQuery 对象的 length 属性而不是 serializeArray() 方法返回的数组的长度,请尝试以下操作:

          if ($(".gear_checkout_checkbox:checked").length === 0) { 
              jQuery.wl_Alert('Please select a piece of equipment that you\'re checking out!','warning','#no_answers','#workform', {sticky:false}); 
              one_selected = false;
          }
          

          【讨论】:

            猜你喜欢
            • 2010-10-12
            • 1970-01-01
            • 1970-01-01
            • 2014-08-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-08
            • 2019-12-31
            相关资源
            最近更新 更多