forked from osanam-giordane/MobEAD
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mobEAD.bindings.js
70 lines (64 loc) · 2.19 KB
/
mobEAD.bindings.js
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
// Hooks up a form to jQuery Validation
ko.bindingHandlers.validate = {
init: function (elem, valueAccessor) {
$(elem).validate();
}
};
// Controls whether or not the text in a textbox is selected based on a model property
ko.bindingHandlers.selected = {
init: function (elem, valueAccessor) {
$(elem).blur(function () {
var boundProperty = valueAccessor();
if (ko.isWriteableObservable(boundProperty)) {
boundProperty(false);
}
});
},
update: function (elem, valueAccessor) {
var shouldBeSelected = ko.utils.unwrapObservable(valueAccessor());
if (shouldBeSelected) {
$(elem).select();
}
}
};
// Makes a textbox lose focus if you press "enter"
ko.bindingHandlers.blurOnEnter = {
init: function (elem, valueAccessor) {
$(elem).keypress(function (evt) {
if (evt.keyCode === 13 /* enter */) {
evt.preventDefault();
$(elem).triggerHandler("change");
$(elem).blur();
}
});
}
};
// Simulates HTML5-style placeholders on older browsers
ko.bindingHandlers.placeholder = {
init: function (elem, valueAccessor) {
var placeholderText = ko.utils.unwrapObservable(valueAccessor()),
input = $(elem);
input.attr('placeholder', placeholderText);
// For older browsers, manually implement placeholder behaviors
if (!Modernizr.input.placeholder) {
input.focus(function () {
if (input.val() === placeholderText) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function () {
setTimeout(function () {
if (input.val() === '' || input.val() === placeholderText) {
input.addClass('placeholder');
input.val(placeholderText);
}
}, 0);
}).blur();
input.parents('form').submit(function () {
if (input.val() === placeholderText) {
input.val('');
}
});
}
}
};