将jQueryUI Slider限制为低于某个数量



如果用户从复选框中选择了一些内容,我需要"冻结"滑块。我的代码如下:

$('#slider').slider({
            range: 'min',
            value: 20,
            min: 0,
            max: 500,
            slide: function(event, ui) {
                $('input#amount').val('$' + ui.value);
            }
        });
$('div.checkboxes').children('p').children('input').each(function() {
    $(this).change(function() {
        var amount = $(this).attr('data-amount'),
            curr = $('input#amount').val().replace('$',''),
            newPrice = parseFloat(curr)+parseFloat(amount),
            oldPrice = parseFloat(curr)-parseFloat(amount);
        if($(this).is(':checked')) {
            $('#slider').slider({
                'value': newPrice
            });
            $('input#amount').val('$' + newPrice);
        } else {
            $('#slider').slider({
                'value': oldPrice
            });
            $('input#amount').val('$' + oldPrice);
        }
    })
})

正如您所看到的,当选中一个或多个复选框时,它会滑动到某个范围。但我的问题是,当用户点击每个复选框,然后手动降低价格时。我能做些什么来防止这种情况发生?

我知道的唯一方法是检查slide函数中的值,如果不尊重,则限制函数本身返回false。

在我的示例中,我通过按钮设置了一个全局范围的变量prizeLimit(但我可以在任何地方设置),并在滑块slide事件中检查该变量。

代码:

var prizeLimit = 0;
$(document).ready(function () {
    $('#amount').val('$20');
    $('#slider').slider({
        range: 'min',
        value: 20,
        min: 0,
        max: 500,
        slide: function (event, ui) {
            if (ui.value < prizeLimit) return false;
            $('#amount').val('$' + ui.value);
        }
    });
    $('#setPrizeFree').click(function () {
        prizeLimit = 0
    });
    $('#setPrizeMin').click(function () {
        prizeLimit = 158
        $('#slider').slider({
            'value': 158
        });
        $('input#amount').val('$158');
    });
});

演示:http://jsfiddle.net/IrvinDominin/3bCzb/

相关内容

  • 没有找到相关文章

最新更新