summaryrefslogtreecommitdiff
path: root/source/bower_components/modernizr/feature-detects/forms-validation.js
diff options
context:
space:
mode:
Diffstat (limited to 'source/bower_components/modernizr/feature-detects/forms-validation.js')
-rw-r--r--source/bower_components/modernizr/feature-detects/forms-validation.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/source/bower_components/modernizr/feature-detects/forms-validation.js b/source/bower_components/modernizr/feature-detects/forms-validation.js
new file mode 100644
index 0000000..d52921a
--- /dev/null
+++ b/source/bower_components/modernizr/feature-detects/forms-validation.js
@@ -0,0 +1,62 @@
+// This implementation only tests support for interactive form validation.
+// To check validation for a specific type or a specific other constraint,
+// the test can be combined:
+// - Modernizr.inputtypes.numer && Modernizr.formvalidation (browser supports rangeOverflow, typeMismatch etc. for type=number)
+// - Modernizr.input.required && Modernizr.formvalidation (browser supports valueMissing)
+//
+(function(document, Modernizr){
+
+
+ Modernizr.formvalidationapi = false;
+ Modernizr.formvalidationmessage = false;
+
+ Modernizr.addTest('formvalidation', function() {
+ var form = document.createElement('form');
+ if ( !('checkValidity' in form) || !('addEventListener' in form) ) {
+ return false;
+ }
+ if ('reportValidity' in form) {
+ return true;
+ }
+ var invalidFired = false;
+ var input;
+
+ Modernizr.formvalidationapi = true;
+
+ // Prevent form from being submitted
+ form.addEventListener('submit', function(e) {
+ //Opera does not validate form, if submit is prevented
+ if ( !window.opera ) {
+ e.preventDefault();
+ }
+ e.stopPropagation();
+ }, false);
+
+ // Calling form.submit() doesn't trigger interactive validation,
+ // use a submit button instead
+ //older opera browsers need a name attribute
+ form.innerHTML = '<input name="modTest" required><button></button>';
+
+ Modernizr.testStyles('#modernizr form{position:absolute;top:-99999em}', function( node ) {
+ node.appendChild(form);
+
+ input = form.getElementsByTagName('input')[0];
+
+ // Record whether "invalid" event is fired
+ input.addEventListener('invalid', function(e) {
+ invalidFired = true;
+ e.preventDefault();
+ e.stopPropagation();
+ }, false);
+
+ //Opera does not fully support the validationMessage property
+ Modernizr.formvalidationmessage = !!input.validationMessage;
+
+ // Submit form by clicking submit button
+ form.getElementsByTagName('button')[0].click();
+ });
+
+ return invalidFired;
+ });
+
+})(document, window.Modernizr);