templates/dojo/dojo.formalize.js in compass_formalize-0.0.4 vs templates/dojo/dojo.formalize.js in compass_formalize-0.0.5

- old
+ new

@@ -1,38 +1,49 @@ -// -// Note: This file depends on the Dojo library. -// +/* + Formalize - version 1.2 + Note: This file depends on the Dojo library. +*/ + // Module pattern: -// http://yuiblog.com/blog/2007/06/12/module-pattern/ +// http://yuiblog.com/blog/2007/06/12/module-pattern var FORMALIZE = (function(window, document, undefined) { + // Internet Explorer detection. + function IE(version) { + var b = document.createElement('b'); + b.innerHTML = '<!--[if IE ' + version + ']><br><![endif]-->'; + return !!b.getElementsByTagName('br').length; + } + // Private constants. var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input'); var AUTOFOCUS_SUPPORTED = 'autofocus' in document.createElement('input'); - var WEBKIT = 'webkitAppearance' in document.createElement('select').style; - var IE6 = parseInt(dojo.isIE, 10) === 6; - var IE7 = parseInt(dojo.isIE, 10) === 7; + var IE6 = IE(6); + var IE7 = IE(7); // Expose innards of FORMALIZE. return { // FORMALIZE.go go: function() { - for (var i in FORMALIZE.init) { - FORMALIZE.init[i](); + var i, j = this.init; + + for (i in j) { + j.hasOwnProperty(i) && j[i](); } }, // FORMALIZE.init init: { - // FORMALIZE.init.detect_webkit - detect_webkit: function() { - if (!WEBKIT) { - return; - } + // FORMALIZE.init.disable_link_button + disable_link_button: function() { + dojo.connect(document.documentElement, 'click', function(ev) { + var el = ev.target; + var is_disabled = el.tagName.toLowerCase() === 'a' && el.className.match('button_disabled'); - // Tweaks for Safari + Chrome. - // <html class="is_webkit"> - dojo.addClass(document.documentElement, 'is_webkit'); + if (is_disabled) { + ev.preventDefault(); + } + }); }, // FORMALIZE.init.full_input_size full_input_size: function() { if (!IE7 || !dojo.query('textarea, input.input_full').length) { return; @@ -96,11 +107,15 @@ autofocus: function() { if (AUTOFOCUS_SUPPORTED || !dojo.query('[autofocus]').length) { return; } - dojo.query('[autofocus]')[0].focus(); + var el = dojo.query('[autofocus]')[0]; + + if (!el.disabled) { + el.focus(); + } }, // FORMALIZE.init.placeholder placeholder: function() { if (PLACEHOLDER_SUPPORTED || !dojo.query('[placeholder]').length) { // Exit if placeholder is supported natively, @@ -109,10 +124,16 @@ } FORMALIZE.misc.add_placeholder(); dojo.query('[placeholder]').forEach(function(el) { + // Placeholder obscured in older browsers, + // so there's no point adding to password. + if (el.type === 'password') { + return; + } + dojo.connect(el, 'onfocus', function() { var text = el.getAttribute('placeholder'); if (el.value === text) { el.value = ''; @@ -154,9 +175,15 @@ // or if page does not have any placeholder. return; } dojo.query('[placeholder]').forEach(function(el) { + // Placeholder obscured in older browsers, + // so there's no point adding to password. + if (el.type === 'password') { + return; + } + var text = el.getAttribute('placeholder'); if (!el.value || el.value === text) { el.value = text; dojo.addClass(el, 'placeholder_text'); \ No newline at end of file