diff default/node_modules/shoestring/src/dom/serialize.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/default/node_modules/shoestring/src/dom/serialize.js	Sat May 31 09:21:51 2025 +0800
@@ -0,0 +1,54 @@
+//>>excludeStart("exclude", pragmas.exclude);
+define([ "shoestring" ], function(){
+//>>excludeEnd("exclude");
+
+	shoestring.inputTypes = [
+		"text",
+		"hidden",
+		"password",
+		"color",
+		"date",
+		"datetime",
+		// "datetime\-local" matched by datetime
+		"email",
+		"month",
+		"number",
+		"range",
+		"search",
+		"tel",
+		"time",
+		"url",
+		"week"
+	];
+
+	shoestring.inputTypeTest = new RegExp( shoestring.inputTypes.join( "|" ) );
+
+
+	/**
+	 * Serialize child input element values into an object.
+	 *
+	 * @return shoestring
+	 * @this shoestring
+	 */
+	shoestring.fn.serialize = function(){
+		var data = {};
+
+		shoestring( "input, select", this ).each(function(){
+			var type = this.type, name = this.name,	value = this.value;
+
+			if( shoestring.inputTypeTest.test( type ) ||
+					( type === "checkbox" || type === "radio" ) &&
+					this.checked ){
+
+				data[ name ] = value;
+			}	else if( this.nodeName === "SELECT" ){
+				data[ name ] = this.options[ this.selectedIndex ].nodeValue;
+			}
+		});
+
+		return data;
+	};
+
+//>>excludeStart("exclude", pragmas.exclude);
+});
+//>>excludeEnd("exclude");