webshims-rails 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/polyfiller.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/es5.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +1 -1
- data/vendor/assets/javascripts/webshims/minified/shims/track.js +1 -1
- data/vendor/assets/javascripts/webshims/polyfiller.js +10 -7
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +51 -48
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +126 -105
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -47
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +97 -86
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +49 -45
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +168 -155
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +168 -155
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +9 -24
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +121 -116
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +82 -93
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +75 -57
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +11 -24
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +77 -60
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +59 -65
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +169 -157
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +99 -87
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +170 -156
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +128 -106
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +83 -95
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +71 -69
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +71 -69
- data/vendor/assets/javascripts/webshims/shims/combos/59.js +72 -71
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +8 -22
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +8 -22
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +97 -86
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +124 -102
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +49 -45
- data/vendor/assets/javascripts/webshims/shims/es5.js +2 -3
- data/vendor/assets/javascripts/webshims/shims/form-core.js +72 -70
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +8 -22
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +11 -24
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +48 -41
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +26 -15
- data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +27 -16
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +18 -6
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +2 -1
- metadata +2 -2
@@ -1,6 +1,7 @@
|
|
1
1
|
//additional tests for partial implementation of forms features
|
2
2
|
(function($){
|
3
3
|
"use strict";
|
4
|
+
var isWebkit = /webkit/i.test(navigator.userAgent);
|
4
5
|
var Modernizr = window.Modernizr;
|
5
6
|
var webshims = $.webshims;
|
6
7
|
var bugs = webshims.bugs;
|
@@ -43,80 +44,80 @@
|
|
43
44
|
|
44
45
|
if(!Modernizr.formvalidation || bugs.bustedValidity){
|
45
46
|
testRequiredFind();
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
webshims.capturingEvents(['input']);
|
51
|
-
webshims.capturingEvents(['invalid'], true);
|
52
|
-
|
53
|
-
if(window.opera || window.testGoodWithFix){
|
54
|
-
|
55
|
-
form.appendTo('head');
|
56
|
-
|
57
|
-
testRequiredFind();
|
58
|
-
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
47
|
+
} else {
|
48
|
+
//create delegatable events
|
49
|
+
webshims.capturingEvents(['input']);
|
50
|
+
webshims.capturingEvents(['invalid'], true);
|
59
51
|
|
60
|
-
|
61
|
-
|
62
|
-
form.remove();
|
52
|
+
if(window.opera || window.testGoodWithFix){
|
63
53
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
54
|
+
form.appendTo('head');
|
55
|
+
|
56
|
+
testRequiredFind();
|
57
|
+
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
58
|
+
|
59
|
+
webshims.reTest(['form-native-extend', 'form-message']);
|
60
|
+
|
61
|
+
form.remove();
|
72
62
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
63
|
+
$(function(){
|
64
|
+
onDomextend(function(){
|
65
|
+
|
66
|
+
//Opera shows native validation bubbles in case of input.checkValidity()
|
67
|
+
// Opera 11.6/12 hasn't fixed this issue right, it's buggy
|
68
|
+
var preventDefault = function(e){
|
69
|
+
e.preventDefault();
|
70
|
+
};
|
71
|
+
|
72
|
+
['form', 'input', 'textarea', 'select'].forEach(function(name){
|
73
|
+
var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
|
74
|
+
prop: {
|
75
|
+
value: function(){
|
76
|
+
if (!webshims.fromSubmit) {
|
77
|
+
$(this).on('invalid.checkvalidity', preventDefault);
|
78
|
+
}
|
79
|
+
|
80
|
+
webshims.fromCheckValidity = true;
|
81
|
+
var ret = desc.prop._supvalue.apply(this, arguments);
|
82
|
+
if (!webshims.fromSubmit) {
|
83
|
+
$(this).unbind('invalid.checkvalidity', preventDefault);
|
84
|
+
}
|
85
|
+
webshims.fromCheckValidity = false;
|
86
|
+
return ret;
|
85
87
|
}
|
86
|
-
webshims.fromCheckValidity = false;
|
87
|
-
return ret;
|
88
88
|
}
|
89
|
-
}
|
89
|
+
});
|
90
90
|
});
|
91
|
+
|
91
92
|
});
|
92
|
-
|
93
93
|
});
|
94
|
-
}
|
94
|
+
}
|
95
|
+
|
96
|
+
if(isWebkit && !webshims.bugs.bustedValidity){
|
97
|
+
(function(){
|
98
|
+
var elems = /^(?:textarea|input)$/i;
|
99
|
+
var form = false;
|
100
|
+
|
101
|
+
document.addEventListener('contextmenu', function(e){
|
102
|
+
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
103
|
+
setTimeout(function(){
|
104
|
+
form = false;
|
105
|
+
}, 1);
|
106
|
+
}
|
107
|
+
}, false);
|
108
|
+
|
109
|
+
$(window).on('invalid', function(e){
|
110
|
+
if(e.originalEvent && form && form == e.target.form){
|
111
|
+
e.wrongWebkitInvalid = true;
|
112
|
+
e.stopImmediatePropagation();
|
113
|
+
}
|
114
|
+
});
|
115
|
+
|
116
|
+
})();
|
117
|
+
}
|
95
118
|
}
|
96
119
|
|
97
|
-
|
98
|
-
(function(){
|
99
|
-
var elems = /^(?:textarea|input)$/i;
|
100
|
-
var form = false;
|
101
|
-
|
102
|
-
document.addEventListener('contextmenu', function(e){
|
103
|
-
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
104
|
-
setTimeout(function(){
|
105
|
-
form = false;
|
106
|
-
}, 1);
|
107
|
-
}
|
108
|
-
}, false);
|
109
|
-
|
110
|
-
$(window).on('invalid', function(e){
|
111
|
-
if(e.originalEvent && form && form == e.target.form){
|
112
|
-
e.wrongWebkitInvalid = true;
|
113
|
-
e.stopImmediatePropagation();
|
114
|
-
}
|
115
|
-
});
|
116
|
-
|
117
|
-
})();
|
118
|
-
}
|
119
|
-
})(jQuery);
|
120
|
+
|
120
121
|
|
121
122
|
jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
|
122
123
|
"use strict";
|
@@ -231,7 +232,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
231
232
|
return false;
|
232
233
|
};
|
233
234
|
|
234
|
-
if(Modernizr.formvalidation &&
|
235
|
+
if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
|
235
236
|
(function(){
|
236
237
|
var retriggerRadioValidity = function(){
|
237
238
|
var validity;
|
@@ -410,7 +411,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
410
411
|
|
411
412
|
|
412
413
|
var setRoot = function(){
|
413
|
-
webshims.scrollRoot = (
|
414
|
+
webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
|
414
415
|
$(document.body) :
|
415
416
|
$(document.documentElement)
|
416
417
|
;
|
@@ -432,7 +433,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
432
433
|
|
433
434
|
/* some extra validation UI */
|
434
435
|
webshims.validityAlert = (function(){
|
435
|
-
var alertElem =
|
436
|
+
var alertElem = 'span';
|
436
437
|
var errorBubble;
|
437
438
|
var hideTimer = false;
|
438
439
|
var focusTimer = false;
|
@@ -547,7 +548,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
547
548
|
errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
|
548
549
|
webshims.ready('DOM', function(){
|
549
550
|
errorBubble.appendTo('body');
|
550
|
-
if($.fn.bgIframe
|
551
|
+
if($.fn.bgIframe){
|
551
552
|
errorBubble.bgIframe();
|
552
553
|
}
|
553
554
|
});
|
@@ -627,8 +628,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
627
628
|
});
|
628
629
|
});
|
629
630
|
}
|
630
|
-
|
631
631
|
});
|
632
|
+
|
633
|
+
})(jQuery);
|
632
634
|
jQuery.webshims.register('form-message', function($, webshims, window, document, undefined, options){
|
633
635
|
"use strict";
|
634
636
|
var validityMessages = webshims.validityMessages;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
//additional tests for partial implementation of forms features
|
2
2
|
(function($){
|
3
3
|
"use strict";
|
4
|
+
var isWebkit = /webkit/i.test(navigator.userAgent);
|
4
5
|
var Modernizr = window.Modernizr;
|
5
6
|
var webshims = $.webshims;
|
6
7
|
var bugs = webshims.bugs;
|
@@ -43,80 +44,80 @@
|
|
43
44
|
|
44
45
|
if(!Modernizr.formvalidation || bugs.bustedValidity){
|
45
46
|
testRequiredFind();
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
webshims.capturingEvents(['input']);
|
51
|
-
webshims.capturingEvents(['invalid'], true);
|
52
|
-
|
53
|
-
if(window.opera || window.testGoodWithFix){
|
54
|
-
|
55
|
-
form.appendTo('head');
|
56
|
-
|
57
|
-
testRequiredFind();
|
58
|
-
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
47
|
+
} else {
|
48
|
+
//create delegatable events
|
49
|
+
webshims.capturingEvents(['input']);
|
50
|
+
webshims.capturingEvents(['invalid'], true);
|
59
51
|
|
60
|
-
|
61
|
-
|
62
|
-
form.remove();
|
52
|
+
if(window.opera || window.testGoodWithFix){
|
63
53
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
54
|
+
form.appendTo('head');
|
55
|
+
|
56
|
+
testRequiredFind();
|
57
|
+
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
58
|
+
|
59
|
+
webshims.reTest(['form-native-extend', 'form-message']);
|
60
|
+
|
61
|
+
form.remove();
|
72
62
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
63
|
+
$(function(){
|
64
|
+
onDomextend(function(){
|
65
|
+
|
66
|
+
//Opera shows native validation bubbles in case of input.checkValidity()
|
67
|
+
// Opera 11.6/12 hasn't fixed this issue right, it's buggy
|
68
|
+
var preventDefault = function(e){
|
69
|
+
e.preventDefault();
|
70
|
+
};
|
71
|
+
|
72
|
+
['form', 'input', 'textarea', 'select'].forEach(function(name){
|
73
|
+
var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
|
74
|
+
prop: {
|
75
|
+
value: function(){
|
76
|
+
if (!webshims.fromSubmit) {
|
77
|
+
$(this).on('invalid.checkvalidity', preventDefault);
|
78
|
+
}
|
79
|
+
|
80
|
+
webshims.fromCheckValidity = true;
|
81
|
+
var ret = desc.prop._supvalue.apply(this, arguments);
|
82
|
+
if (!webshims.fromSubmit) {
|
83
|
+
$(this).unbind('invalid.checkvalidity', preventDefault);
|
84
|
+
}
|
85
|
+
webshims.fromCheckValidity = false;
|
86
|
+
return ret;
|
85
87
|
}
|
86
|
-
webshims.fromCheckValidity = false;
|
87
|
-
return ret;
|
88
88
|
}
|
89
|
-
}
|
89
|
+
});
|
90
90
|
});
|
91
|
+
|
91
92
|
});
|
92
|
-
|
93
93
|
});
|
94
|
-
}
|
94
|
+
}
|
95
|
+
|
96
|
+
if(isWebkit && !webshims.bugs.bustedValidity){
|
97
|
+
(function(){
|
98
|
+
var elems = /^(?:textarea|input)$/i;
|
99
|
+
var form = false;
|
100
|
+
|
101
|
+
document.addEventListener('contextmenu', function(e){
|
102
|
+
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
103
|
+
setTimeout(function(){
|
104
|
+
form = false;
|
105
|
+
}, 1);
|
106
|
+
}
|
107
|
+
}, false);
|
108
|
+
|
109
|
+
$(window).on('invalid', function(e){
|
110
|
+
if(e.originalEvent && form && form == e.target.form){
|
111
|
+
e.wrongWebkitInvalid = true;
|
112
|
+
e.stopImmediatePropagation();
|
113
|
+
}
|
114
|
+
});
|
115
|
+
|
116
|
+
})();
|
117
|
+
}
|
95
118
|
}
|
96
119
|
|
97
|
-
|
98
|
-
(function(){
|
99
|
-
var elems = /^(?:textarea|input)$/i;
|
100
|
-
var form = false;
|
101
|
-
|
102
|
-
document.addEventListener('contextmenu', function(e){
|
103
|
-
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
104
|
-
setTimeout(function(){
|
105
|
-
form = false;
|
106
|
-
}, 1);
|
107
|
-
}
|
108
|
-
}, false);
|
109
|
-
|
110
|
-
$(window).on('invalid', function(e){
|
111
|
-
if(e.originalEvent && form && form == e.target.form){
|
112
|
-
e.wrongWebkitInvalid = true;
|
113
|
-
e.stopImmediatePropagation();
|
114
|
-
}
|
115
|
-
});
|
116
|
-
|
117
|
-
})();
|
118
|
-
}
|
119
|
-
})(jQuery);
|
120
|
+
|
120
121
|
|
121
122
|
jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
|
122
123
|
"use strict";
|
@@ -231,7 +232,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
231
232
|
return false;
|
232
233
|
};
|
233
234
|
|
234
|
-
if(Modernizr.formvalidation &&
|
235
|
+
if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
|
235
236
|
(function(){
|
236
237
|
var retriggerRadioValidity = function(){
|
237
238
|
var validity;
|
@@ -410,7 +411,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
410
411
|
|
411
412
|
|
412
413
|
var setRoot = function(){
|
413
|
-
webshims.scrollRoot = (
|
414
|
+
webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
|
414
415
|
$(document.body) :
|
415
416
|
$(document.documentElement)
|
416
417
|
;
|
@@ -432,7 +433,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
432
433
|
|
433
434
|
/* some extra validation UI */
|
434
435
|
webshims.validityAlert = (function(){
|
435
|
-
var alertElem =
|
436
|
+
var alertElem = 'span';
|
436
437
|
var errorBubble;
|
437
438
|
var hideTimer = false;
|
438
439
|
var focusTimer = false;
|
@@ -547,7 +548,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
547
548
|
errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
|
548
549
|
webshims.ready('DOM', function(){
|
549
550
|
errorBubble.appendTo('body');
|
550
|
-
if($.fn.bgIframe
|
551
|
+
if($.fn.bgIframe){
|
551
552
|
errorBubble.bgIframe();
|
552
553
|
}
|
553
554
|
});
|
@@ -627,8 +628,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
627
628
|
});
|
628
629
|
});
|
629
630
|
}
|
630
|
-
|
631
631
|
});
|
632
|
+
|
633
|
+
})(jQuery);
|
632
634
|
jQuery.webshims.register('form-native-extend', function($, webshims, window, doc, undefined, options){
|
633
635
|
"use strict";
|
634
636
|
var Modernizr = window.Modernizr;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
//additional tests for partial implementation of forms features
|
2
2
|
(function($){
|
3
3
|
"use strict";
|
4
|
+
var isWebkit = /webkit/i.test(navigator.userAgent);
|
4
5
|
var Modernizr = window.Modernizr;
|
5
6
|
var webshims = $.webshims;
|
6
7
|
var bugs = webshims.bugs;
|
@@ -43,80 +44,80 @@
|
|
43
44
|
|
44
45
|
if(!Modernizr.formvalidation || bugs.bustedValidity){
|
45
46
|
testRequiredFind();
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
webshims.capturingEvents(['input']);
|
51
|
-
webshims.capturingEvents(['invalid'], true);
|
52
|
-
|
53
|
-
if(window.opera || window.testGoodWithFix){
|
54
|
-
|
55
|
-
form.appendTo('head');
|
56
|
-
|
57
|
-
testRequiredFind();
|
58
|
-
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
59
|
-
|
60
|
-
webshims.reTest(['form-native-extend', 'form-message']);
|
47
|
+
} else {
|
48
|
+
//create delegatable events
|
49
|
+
webshims.capturingEvents(['input']);
|
50
|
+
webshims.capturingEvents(['invalid'], true);
|
61
51
|
|
62
|
-
|
52
|
+
if(window.opera || window.testGoodWithFix){
|
63
53
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
54
|
+
form.appendTo('head');
|
55
|
+
|
56
|
+
testRequiredFind();
|
57
|
+
bugs.validationMessage = !(inputElem.prop('validationMessage'));
|
58
|
+
|
59
|
+
webshims.reTest(['form-native-extend', 'form-message']);
|
60
|
+
|
61
|
+
form.remove();
|
72
62
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
63
|
+
$(function(){
|
64
|
+
onDomextend(function(){
|
65
|
+
|
66
|
+
//Opera shows native validation bubbles in case of input.checkValidity()
|
67
|
+
// Opera 11.6/12 hasn't fixed this issue right, it's buggy
|
68
|
+
var preventDefault = function(e){
|
69
|
+
e.preventDefault();
|
70
|
+
};
|
71
|
+
|
72
|
+
['form', 'input', 'textarea', 'select'].forEach(function(name){
|
73
|
+
var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
|
74
|
+
prop: {
|
75
|
+
value: function(){
|
76
|
+
if (!webshims.fromSubmit) {
|
77
|
+
$(this).on('invalid.checkvalidity', preventDefault);
|
78
|
+
}
|
79
|
+
|
80
|
+
webshims.fromCheckValidity = true;
|
81
|
+
var ret = desc.prop._supvalue.apply(this, arguments);
|
82
|
+
if (!webshims.fromSubmit) {
|
83
|
+
$(this).unbind('invalid.checkvalidity', preventDefault);
|
84
|
+
}
|
85
|
+
webshims.fromCheckValidity = false;
|
86
|
+
return ret;
|
85
87
|
}
|
86
|
-
webshims.fromCheckValidity = false;
|
87
|
-
return ret;
|
88
88
|
}
|
89
|
-
}
|
89
|
+
});
|
90
90
|
});
|
91
|
+
|
91
92
|
});
|
92
|
-
|
93
93
|
});
|
94
|
-
}
|
94
|
+
}
|
95
|
+
|
96
|
+
if(isWebkit && !webshims.bugs.bustedValidity){
|
97
|
+
(function(){
|
98
|
+
var elems = /^(?:textarea|input)$/i;
|
99
|
+
var form = false;
|
100
|
+
|
101
|
+
document.addEventListener('contextmenu', function(e){
|
102
|
+
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
103
|
+
setTimeout(function(){
|
104
|
+
form = false;
|
105
|
+
}, 1);
|
106
|
+
}
|
107
|
+
}, false);
|
108
|
+
|
109
|
+
$(window).on('invalid', function(e){
|
110
|
+
if(e.originalEvent && form && form == e.target.form){
|
111
|
+
e.wrongWebkitInvalid = true;
|
112
|
+
e.stopImmediatePropagation();
|
113
|
+
}
|
114
|
+
});
|
115
|
+
|
116
|
+
})();
|
117
|
+
}
|
95
118
|
}
|
96
119
|
|
97
|
-
|
98
|
-
(function(){
|
99
|
-
var elems = /^(?:textarea|input)$/i;
|
100
|
-
var form = false;
|
101
|
-
|
102
|
-
document.addEventListener('contextmenu', function(e){
|
103
|
-
if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
|
104
|
-
setTimeout(function(){
|
105
|
-
form = false;
|
106
|
-
}, 1);
|
107
|
-
}
|
108
|
-
}, false);
|
109
|
-
|
110
|
-
$(window).on('invalid', function(e){
|
111
|
-
if(e.originalEvent && form && form == e.target.form){
|
112
|
-
e.wrongWebkitInvalid = true;
|
113
|
-
e.stopImmediatePropagation();
|
114
|
-
}
|
115
|
-
});
|
116
|
-
|
117
|
-
})();
|
118
|
-
}
|
119
|
-
})(jQuery);
|
120
|
+
|
120
121
|
|
121
122
|
jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
|
122
123
|
"use strict";
|
@@ -231,7 +232,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
231
232
|
return false;
|
232
233
|
};
|
233
234
|
|
234
|
-
if(Modernizr.formvalidation &&
|
235
|
+
if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
|
235
236
|
(function(){
|
236
237
|
var retriggerRadioValidity = function(){
|
237
238
|
var validity;
|
@@ -410,7 +411,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
410
411
|
|
411
412
|
|
412
413
|
var setRoot = function(){
|
413
|
-
webshims.scrollRoot = (
|
414
|
+
webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
|
414
415
|
$(document.body) :
|
415
416
|
$(document.documentElement)
|
416
417
|
;
|
@@ -432,7 +433,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
432
433
|
|
433
434
|
/* some extra validation UI */
|
434
435
|
webshims.validityAlert = (function(){
|
435
|
-
var alertElem =
|
436
|
+
var alertElem = 'span';
|
436
437
|
var errorBubble;
|
437
438
|
var hideTimer = false;
|
438
439
|
var focusTimer = false;
|
@@ -547,7 +548,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
547
548
|
errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
|
548
549
|
webshims.ready('DOM', function(){
|
549
550
|
errorBubble.appendTo('body');
|
550
|
-
if($.fn.bgIframe
|
551
|
+
if($.fn.bgIframe){
|
551
552
|
errorBubble.bgIframe();
|
552
553
|
}
|
553
554
|
});
|
@@ -627,8 +628,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
|
|
627
628
|
});
|
628
629
|
});
|
629
630
|
}
|
630
|
-
|
631
631
|
});
|
632
|
+
|
633
|
+
})(jQuery);
|
632
634
|
jQuery.webshims.register('form-native-extend', function($, webshims, window, doc, undefined, options){
|
633
635
|
"use strict";
|
634
636
|
var Modernizr = window.Modernizr;
|
@@ -1280,7 +1282,6 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
|
|
1280
1282
|
range: 1,
|
1281
1283
|
date: 1
|
1282
1284
|
};
|
1283
|
-
var lteie6 = ($.browser.msie && parseInt($.browser.version, 10) < 7);
|
1284
1285
|
var globStoredOptions = {};
|
1285
1286
|
var getStoredOptions = function(name){
|
1286
1287
|
if(!name){return [];}
|
@@ -1564,7 +1565,7 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
|
|
1564
1565
|
this.arrayOptions = allOptions;
|
1565
1566
|
this.shadowList.html('<div class="datalist-outer-box"><div class="datalist-box"><ul role="list">'+ list.join("\n") +'</ul></div></div>');
|
1566
1567
|
|
1567
|
-
if($.fn.bgIframe
|
1568
|
+
if($.fn.bgIframe){
|
1568
1569
|
this.shadowList.bgIframe();
|
1569
1570
|
}
|
1570
1571
|
|