[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 /* 2 YUI 3.17.2 (build 9c3c78e) 3 Copyright 2014 Yahoo! Inc. All rights reserved. 4 Licensed under the BSD License. 5 http://yuilibrary.com/license/ 6 */ 7 8 YUI.add('io-form', function (Y, NAME) { 9 10 /** 11 * Extends IO to enable HTML form data serialization, when specified 12 * in the transaction's configuration object. 13 * @module io 14 * @submodule io-form 15 * @for IO 16 */ 17 18 var eUC = encodeURIComponent; 19 20 /** 21 * Enumerate through an HTML form's elements collection 22 * and return a string comprised of key-value pairs. 23 * 24 * @method stringify 25 * @static 26 * @param {Node|String} form YUI form node or HTML form id 27 * @param {Object} [options] Configuration options. 28 * @param {Boolean} [options.useDisabled=false] Whether to include disabled fields. 29 * @param {Object|String} [options.extra] Extra values to include. May be a query string or an object with key/value pairs. 30 * @return {String} 31 */ 32 Y.IO.stringify = function(form, options) { 33 options = options || {}; 34 35 var s = Y.IO.prototype._serialize({ 36 id: form, 37 useDisabled: options.useDisabled 38 }, 39 options.extra && typeof options.extra === 'object' ? Y.QueryString.stringify(options.extra) : options.extra); 40 41 return s; 42 }; 43 44 Y.mix(Y.IO.prototype, { 45 /** 46 * Enumerate through an HTML form's elements collection 47 * and return a string comprised of key-value pairs. 48 * 49 * @method _serialize 50 * @private 51 * @param {Object} c 52 * @param {String|Element} c.id YUI form node or HTML form id 53 * @param {Boolean} c.useDisabled `true` to include disabled fields 54 * @param {String} s Key-value data defined in the configuration object. 55 * @return {String} 56 */ 57 _serialize: function(c, s) { 58 var data = [], 59 df = c.useDisabled || false, 60 item = 0, 61 id = (typeof c.id === 'string') ? c.id : c.id.getAttribute('id'), 62 e, f, n, v, d, i, il, j, jl, o; 63 64 if (!id) { 65 id = Y.guid('io:'); 66 c.id.setAttribute('id', id); 67 } 68 69 f = Y.config.doc.getElementById(id); 70 71 if (!f || !f.elements) { 72 return s || ''; 73 } 74 75 // Iterate over the form elements collection to construct the 76 // label-value pairs. 77 for (i = 0, il = f.elements.length; i < il; ++i) { 78 e = f.elements[i]; 79 d = e.disabled; 80 n = e.name; 81 82 if (df ? n : n && !d) { 83 n = eUC(n) + '='; 84 v = eUC(e.value); 85 86 switch (e.type) { 87 // Safari, Opera, FF all default options.value from .text if 88 // value attribute not specified in markup 89 case 'select-one': 90 if (e.selectedIndex > -1) { 91 o = e.options[e.selectedIndex]; 92 data[item++] = n + eUC(o.attributes.value && o.attributes.value.specified ? o.value : o.text); 93 } 94 break; 95 case 'select-multiple': 96 if (e.selectedIndex > -1) { 97 for (j = e.selectedIndex, jl = e.options.length; j < jl; ++j) { 98 o = e.options[j]; 99 if (o.selected) { 100 data[item++] = n + eUC(o.attributes.value && o.attributes.value.specified ? o.value : o.text); 101 } 102 } 103 } 104 break; 105 case 'radio': 106 case 'checkbox': 107 if (e.checked) { 108 data[item++] = n + v; 109 } 110 break; 111 case 'file': 112 // stub case as XMLHttpRequest will only send the file path as a string. 113 case undefined: 114 // stub case for fieldset element which returns undefined. 115 case 'reset': 116 // stub case for input type reset button. 117 case 'button': 118 // stub case for input type button elements. 119 break; 120 case 'submit': 121 default: 122 data[item++] = n + v; 123 } 124 } 125 } 126 127 if (s) { 128 data[item++] = s; 129 } 130 131 Y.log('HTML form serialized. The value is: ' + data.join('&'), 'info', 'io'); 132 return data.join('&'); 133 } 134 }, true); 135 136 137 }, '3.17.2', {"requires": ["io-base", "node-base"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |