【问题标题】:jquery is unable to set the prettyCheckable plugin radio button programmaticallyjquery 无法以编程方式设置 prettyCheckable 插件单选按钮
【发布时间】:2019-12-20 22:50:21
【问题描述】:

我正在使用 prettyCheckable jquery 插件来使我的复选框和单选按钮看起来很漂亮,如果我使用 jquery 设置属性检查它不起作用,因为插件隐藏了实际的复选框并使其成为自己的覆盖 HTML 来美化复选框/收音机,因此当我检查收音机或复选框时 jquery 无法识别

//点击按钮我尝试了所有的东西,但没有任何效果。请帮忙

<input type="radio" id="rdTypeAdd" name="taxationtype" class="radiobutton" value="+" data-     label="Additive" data-customclass="margin-right" checked="checked" />    
<input type="radio" id="rdTypeSub" name="taxationtype" class="radiobutton" value="-" data-label="Subtractive" data-customclass="margin-right" />


    $('#rdTypeAdd').buttonset();
    $('[name="rdTypeAdd"][value="+"]').prop("checked", true);
    $('#rdTypeAdd').buttonset("refresh");

    //$('[name="rdTypeAdd"][value="+"]').attr("checked", true);
    //$('[name="rdTypeAdd"][value="+"]').prop("checked", true).trigger("change");

    //($('.rdTypeAdd').prop('checked',true));

【问题讨论】:

    标签: jquery radio-button


    【解决方案1】:

    不知道这是多少黑客,但我能够让一个 div 选中和取消选中一个 prettyCheckable 复选框。我注意到,当我从 prettyCheckable 中删除 class="checked" 时,该复选框变为未选中状态。

    $("#checkbox").prettyCheckable();
        $("#checkboxDiv").click(function() {
        if ($("#checkbox").is(':checked'))
        {
            $("#checkbox").next().removeClass("checked");
            $('#checkbox').each(function(){ this.checked = false; });
        } else {
            $("#checkbox").next().addClass("checked");
            $('#checkbox').each(function(){ this.checked = true; });
        }
    });
    

    从(即 .next() 到 prettyCheckable 元素)中添加或删除“checked”类并在原始复选框元素中设置 checked=true 都需要它才能工作。然而,我的 if cookie is set 只能选中 ' 类的框。就像我说的那样,我不知道这是多么糟糕的黑客攻击,但它对我有用,希望它可以帮助你。不知道为什么 prettyCheckable 没有这种能力或至少记录它,因为我找不到任何东西。

    【讨论】:

    • 我最终遇到了更多关于 prettyCheckable 的问题,并发现了其他几个在 unheap.com 上效果更好的 jQuery 复选框插件
    【解决方案2】:

    您可以使用非常可检查的功能:

    $('[name="rdTypeAdd"][value="+"]').prettyCheckable('check');

    和

    $('[name="rdTypeAdd"][value="+"]').prettyCheckable('uncheck');

    【讨论】:

    • 实际上,它并没有像魅力一样工作:-/ 它不会触发无线电字段的更改事件。
    • 如果您尝试获取单选按钮的检查状态,请尝试使用 $('#test').prop('checked')
    【解决方案3】:

    这个答案建立在@kravits88 和这个github issue

    var $radio = $('[name="rdTypeAdd"][value="+"]');
    $radio.prettyCheckable('check');
    $radio.prop('checked', true).change();
    $radio.click();
    

    【讨论】:

      【解决方案4】:

      这似乎对我有用。本质上,您必须在您的复选框周围找到由 prettyCheckable 创建的标签父级,并设置它以及输入:

      $("#element").prop("checked", true).parent().find("a:first").addClass("checked");
      

      【讨论】:

        【解决方案5】:

        将“checked”属性设置为任何内容都应该如here 所示工作。

        $('#rdTypeAdd').attr("checked","checked");
        

        【讨论】:

        • prettyCheckable jquery 插件隐藏了实际的复选框并使其成为自己的覆盖 html,如下所示
          如果它是简单的单选按钮,那么您的代码即 $('#rdTypeAdd').attr( “检查”,“检查”);可能工作
        • 即使代码不起作用,因为单选按钮被包裹在 prettycheckable html 中 //$('[name="rdTypeAdd"][value="+"]').prop("checked", true ); // $('#rdTypeAdd').buttonset("refresh"); //$('[name="rdTypeAdd"][value="+"]').addClass("checked"); //$('[name="rdTypeAdd"][value="+"]').prop("checked", true).trigger("change"); //$('#rdTypeAdd').buttonset("refresh"); //var value = $('[name="rdTypeAdd"]:checked').val();
        猜你喜欢
        • 2011-08-15
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 2014-09-20
        相关资源
        最近更新 更多