username@email.com
2025-02-07 6bb722be12f95d3f55a141555be2c79b8fcaeca9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
 * jQuery UI Slider Access
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 0.2
 * Last Modified: 12/02/2011
 * 
 * Copyright 2011 Trent Richardson
 * Dual licensed under the MIT and GPL licenses.
 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
 * 
 */
 (function($){
 
    $.fn.extend({
        sliderAccess: function(options){
            options = options || {};
            options.touchonly = options.touchonly !== undefined? options.touchonly : true; // by default only show it if touch device
 
            if(options.touchonly === true && !("ontouchend" in document))
                return $(this);
                
            return $(this).each(function(i,obj){
                        var $t = $(this),
                            o = $.extend({},{ 
                                            where: 'after',
                                            step: $t.slider('option','step'), 
                                            upIcon: 'ui-icon-plus', 
                                            downIcon: 'ui-icon-minus',
                                            text: false,
                                            upText: '+',
                                            downText: '-',
                                            buttonset: true,
                                            buttonsetTag: 'span'
                                        }, options),
                            $buttons = $('<'+ o.buttonsetTag +' class="ui-slider-access">'+
                                            '<button data-icon="'+ o.downIcon +'" data-step="-'+ o.step +'">'+ o.downText +'</button>'+
                                            '<button data-icon="'+ o.upIcon +'" data-step="'+ o.step +'">'+ o.upText +'</button>'+
                                        '</'+ o.buttonsetTag +'>');
 
                        $buttons.children('button').each(function(j, jobj){
                            var $jt = $(this);
                            $jt.button({ 
                                            text: o.text, 
                                            icons: { primary: $jt.data('icon') }
                                        })
                                .click(function(e){
                                            var step = $jt.data('step'),
                                                curr = $t.slider('value'),
                                                newval = curr += step*1,
                                                minval = $t.slider('option','min'),
                                                maxval = $t.slider('option','max');
 
                                            e.preventDefault();
                                            
                                            if(newval < minval || newval > maxval)
                                                return;
                                            
                                            $t.slider('value', newval);
 
                                            $t.slider("option", "slide").call($t, null, { value: newval });
                                        });
                        });
                        
                        // before or after                    
                        $t[o.where]($buttons);
 
                        if(o.buttonset){
                            $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset();
                            $buttons.eq(0).addClass('ui-corner-left');
                            $buttons.eq(1).addClass('ui-corner-right');
                        }
 
                        // adjust the width so we don't break the original layout
                        var bOuterWidth = $buttons.css({
                                    marginLeft: (o.where == 'after'? 10:0), 
                                    marginRight: (o.where == 'before'? 10:0)
                                }).outerWidth(true) + 5;
                        var tOuterWidth = $t.outerWidth(true);
                        $t.css('display','inline-block').width(tOuterWidth-bOuterWidth);
                    });        
        }
    });
 
})(jQuery);