/ajax/libs/yui/3.0.0pr2/io/io-form-debug.js
https://gitlab.com/Mirros/cdnjs · JavaScript · 88 lines · 56 code · 8 blank · 24 comment · 12 complexity · c7b2c04babc42d2b2d1af1af8ae52a2b MD5 · raw file
- YUI.add('io-form', function(Y) {
- /*
- * Extends the IO base class to enable HTML form data serialization, when specified
- * in the transaction's configuration object.
- * @module io-base
- * @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} o - HTML form object or id.
- * @return string
- */
- _serialize: function(o) {
- var f = (typeof o.id === 'object') ? o.id : Y.config.doc.getElementById(o.id),
- eUC = encodeURIComponent,
- data = [],
- useDf = o.useDisabled || false,
- item = 0,
- e, n, v, d, i, ilen, j, jlen, o;
- // Iterate over the form elements collection to construct the
- // label-value pairs.
- for (i = 0, ilen = f.elements.length; i < ilen; ++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 opt.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, jlen = e.options.length; j < jlen; ++j) {
- o = e.options[j];
- if (o.selected) {
- data[item++] = n + eUC((o.attributes.value && opt.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':
- break;
- default:
- data[item++] = n + v;
- }
- }
- }
- Y.log('HTML form serialized. The value is: ' + data.join('&'), 'info', 'io');
- return data.join('&');
- }
- }, true);
- }, '@VERSION@' ,{requires:['io-base']});