Skip to content

Commit 0305e98

Browse files
author
Tero Piirainen
committed
slider fixes for events and keyboard behaviour
1 parent f950545 commit 0305e98

File tree

3 files changed

+53
-19
lines changed

3 files changed

+53
-19
lines changed

release-notes/version-1.2.0.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ tabs
2727
- deprecated "ajax" effect in favor of lazyloading plugin
2828
- deprecated "horizontal" effect. separate accordion plugin will be released later
2929

30+
slideshow
31+
- play/pause/stop/event bindings to slideshow plugin itself
32+
- this object and code restructure
3033

3134
mask
3235
- default maskId: 'exposeMask' --> 'mask'

src/form/form.slider.js

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -276,20 +276,25 @@
276276

277277
// clicking
278278
root.click(function(e) {
279-
279+
280280
if (input.is(":disabled")) { return false; }
281-
282-
e.type = "onBeforeSlide";
283-
fire.trigger(e);
284-
if (e.isDefaultPrevented()) { return false; }
285-
init();
281+
var fireEvent = e.target != handle[0];
286282

287-
var fix = handle.width() / 2;
283+
if (fireEvent) {
284+
e.type = "onBeforeSlide";
285+
fire.trigger(e);
286+
if (e.isDefaultPrevented()) { return false; }
287+
}
288288

289+
init();
290+
var fix = handle.width() / 2;
289291
seek(conf.vertical ? origo - e.pageY + fix : e.pageX - origo - fix, e);
290292

291-
e.type = "onSlideEnd";
292-
fire.trigger(e);
293+
if (fireEvent) {
294+
e.type = "onSlideEnd";
295+
fire.trigger(e);
296+
}
297+
293298
});
294299

295300
self.onSlide(function(e, val) {
@@ -303,21 +308,35 @@
303308

304309
$(document).keydown(function(e) {
305310

306-
var el = $(e.target), slider = el.data("slider") || current;
311+
var el = $(e.target),
312+
slider = el.data("slider") || current,
313+
key = e.keyCode,
314+
up = $([75, 76, 38, 33, 39]).index(e.keyCode) != -1,
315+
down = $([74, 72, 40, 34, 37]).index(e.keyCode) != -1;
307316

308-
if (slider) {
317+
if ((up || down) && !(e.shiftKey || e.altKey) && slider) {
309318

319+
var fire = slider.getInput().add(slider);
320+
e.type = "onBeforeSlide";
321+
310322
// UP: k=75, l=76, up=38, pageup=33, right=39
311-
if ($([75, 76, 38, 33, 39]).index(e.keyCode) != -1) {
312-
slider.step(e.ctrlKey || e.keyCode == 33 ? 3 : 1, e);
323+
if (up) {
324+
fire.trigger(e);
325+
if (e.isDefaultPrevented()) { return false; }
326+
slider.step(e.ctrlKey || key == 33 ? 3 : 1, e);
313327
return false;
314328
}
315329

316330
// DOWN: j=74, h=72, down=40, pagedown=34, left=37
317-
if ($([74, 72, 40, 34, 37]).index(e.keyCode) != -1) {
318-
slider.step(e.ctrlKey || e.keyCode == 34 ? -3 : -1, e);
331+
if (down) {
332+
fire.trigger(e);
333+
if (e.isDefaultPrevented()) { return false; }
334+
slider.step(e.ctrlKey || key == 34 ? -3 : -1, e);
319335
return false;
320336
}
337+
}
338+
339+
if (slider) {
321340

322341
setTimeout(function() {
323342
var val = /[\d\.]+/.exec(el.val());
@@ -326,10 +345,10 @@
326345
} else {
327346
el.val(slider.getValue());
328347
}
329-
}, 300);
330-
348+
}, 400);
331349
current = slider;
332-
}
350+
}
351+
333352
});
334353

335354
$(document).click(function(e) {

test/form/slider.htm

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
.range { font-size:10px; border:0; background:none; float:left; width: 30px; margin-top:-5px; cursor:pointer; }
1313
.range:focus { background-color:#fff; -moz-border-radius:2px; -webkit-border-radius:2px; }
1414
.lbl { clear:both; padding:2px; font-size:10px; }
15+
16+
.progress {
17+
color:red;
18+
height:30px;
19+
}
1520
</style>
1621

1722

@@ -24,7 +29,14 @@
2429
$(function() {
2530

2631
window.slider = $("[step]").slider({hideInput: false}).bind("onBeforeSlide", function() {
27-
console.info("BIND", arguments);
32+
console.info("onBeforeSlide", this, arguments);
33+
34+
}).bind("onSlideEnd", function() {
35+
console.info("onSlideEnd", this, arguments);
36+
37+
}).bind("onSlide", function() {
38+
console.info("onSlide", this, arguments);
39+
2840

2941
}).filter(":last").data("slider");
3042

0 commit comments

Comments
 (0)