jquery 使用Facetwp限制复选框

92dk7w1h  于 11个月前  发布在  jQuery
关注(0)|答案(1)|浏览(116)

我正在使用FacetWP,一个WordPress插件。它有很好的文档记录,但我没有得到以下权利。我想对可以选择的复选框数量设置限制。
你可以在这里看到3个复选框。它不是默认复选框,所以像这样的解决方案:http://jsfiddle.net/gbrodzik/vVxM2/2229/
我已经试过了,但是不能正常工作
我已经阅读了文档,并得到了以下脚本:

<?php
add_action( 'wp_head', function() {
?>
    <script>
        (function($) {
            $(document).ready(function() {
                $(".facetwp-checkbox").click(function () {
                    if (FWP.facets['hosting_provider_naam'].length = 2) {
                        event.stopImmediatePropagation();

                    }
                });
            });
        })(jQuery);
    </script>
<?php });

字符串
现在我不能选择任何复选框,所以我的if语句有问题,我似乎找不到我做错了什么。
有人知道我的代码有什么问题吗?

svgewumm

svgewumm1#

已经有一段时间了,但是如果有人有兴趣用新版本的FacetWP解决这个问题,我建议这个解决方案(用FacetWP 4.7测试)。
其逻辑是:每当facetwp-loaded事件被触发时,检查您的facet of type复选框是否至少选中了maxNumOptions选项。如果是,将类disabled添加到所有未选中的选项中。此类将阻止选中分配给它的复选框。

if (typeof FWP !== 'undefined') {
    document.addEventListener('facetwp-loaded', function() {
        const facetName = 'hosting_provider_naam'
        if(typeof FWP.facets !== 'undefined' && typeof FWP.facets[facetName] !== 'undefined' && FWP.facet_type[facetName] === 'checkboxes') {
            const maxNumOptions = 2
            if(FWP.facets[facetName].length >= maxNumOptions) {
                let not = ''
                FWP.facets[facetName].forEach(function(facetValue) {
                    not += ':not([data-value="'+facetValue+'"])'
                })
                document.querySelectorAll('.facetwp-facet[data-name="'+facetName+'"] .facetwp-checkbox'+not).forEach(function(checkbox) {
                    checkbox.classList.add('disabled')
                })
            }
        }       
    })
}

字符串

相关问题