diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui3.0.0/api/io-form.js.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui3.0.0/api/io-form.js.html Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,228 @@ + + +
+ + /**
+ * Extends the IO base class to enable HTML form data serialization, when specified
+ * in the transaction's configuration object.
+ * @module io
+ * @submodule io-form
+ */
+
+ Y.mix(Y.io, {
+ /**
+ * @description Method to enumerate through an HTML form's elements collection
+ * and return a string comprised of key-value pairs.
+ *
+ * @method _serialize
+ * @private
+ * @static
+ * @param {object} c - YUI form node or HTML form id.
+ * @param {string} s - Transaction data defined in the configuration.
+ * @return string
+ */
+ _serialize: function(c, s) {
+ var eUC = encodeURIComponent,
+ data = [],
+ useDf = c.useDisabled || false,
+ item = 0,
+ id = (typeof c.id === 'string') ? c.id : c.id.getAttribute('id'),
+ e, f, n, v, d, i, il, j, jl, o;
+
+ if (!id) {
+ id = Y.guid('io:');
+ c.id.setAttribute('id', id);
+ }
+
+ f = Y.config.doc.getElementById(id);
+
+ // Iterate over the form elements collection to construct the
+ // label-value pairs.
+ for (i = 0, il = f.elements.length; i < il; ++i) {
+ e = f.elements[i];
+ d = e.disabled;
+ n = e.name;
+
+ if ((useDf) ? n : (n && !d)) {
+ n = encodeURIComponent(n) + '=';
+ v = encodeURIComponent(e.value);
+
+ switch (e.type) {
+ // Safari, Opera, FF all default options.value from .text if
+ // value attribute not specified in markup
+ case 'select-one':
+ if (e.selectedIndex > -1) {
+ o = e.options[e.selectedIndex];
+ data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
+ }
+ break;
+ case 'select-multiple':
+ if (e.selectedIndex > -1) {
+ for (j = e.selectedIndex, jl = e.options.length; j < jl; ++j) {
+ o = e.options[j];
+ if (o.selected) {
+ data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
+ }
+ }
+ }
+ break;
+ case 'radio':
+ case 'checkbox':
+ if(e.checked){
+ data[item++] = n + v;
+ }
+ break;
+ case 'file':
+ // stub case as XMLHttpRequest will only send the file path as a string.
+ case undefined:
+ // stub case for fieldset element which returns undefined.
+ case 'reset':
+ // stub case for input type reset button.
+ case 'button':
+ // stub case for input type button elements.
+ break;
+ case 'submit':
+ default:
+ data[item++] = n + v;
+ }
+ }
+ }
+ Y.log('HTML form serialized. The value is: ' + data.join('&'), 'info', 'io');
+ return s ? data.join('&') + "&" + s : data.join('&');
+ }
+ }, true);
+