Index: turbogears/widgets/static/ajax.js
===================================================================
--- turbogears/widgets/static/ajax.js	(revision 1511)
+++ turbogears/widgets/static/ajax.js	(working copy)
@@ -1,18 +1,32 @@
 function remoteFormRequest(form, target, options) {
-	var query = Array();
+    var querynames = Array();
+    var queryvalues = Array();
+    querynames.push("tg_random");
+    queryvalues.push(new Date().getTime());
 	var target = getElement(target);
 	var elems = Array('INPUT', 'TEXTAREA', 'SELECT', 'BUTTON');
 	for(var j=0; j<elems.length; j++) {
 		var fields = form.getElementsByTagName(elems[j]);
 		for(var i=0; i<fields.length; i++) {
-			if (getElement(fields[i].id)) {
-				query[fields[i].name] = fields[i].value;
+		    var element = getElement(fields[i].id);
+		    if (element) {
+		        var element_type = getNodeAttribute(element, "type");
+		        if (element_type) {
+		            var element_type = element_type.toLowerCase();
+		        }
+		        if (element_type == "checkbox" || element_type == "radio") {
+		            if (!element.checked) {
+    		            // Ignore if not checked.
+		                continue;
+		            }
+		        }
+	            querynames.push(fields[i].name);
+	            queryvalues.push(fields[i].value);
 			}
 		}
 	}
-	query["tg_random"] = new Date().getTime();
 	//makePOSTRequest(form.action, target, queryString(query));
-	remoteRequest(form, form.action, target, query, options);
+	remoteRequestMulti(form, form.action, target, querynames, queryvalues, options);
 	return true;
 }
 
@@ -31,6 +45,21 @@
 	return true;
 }
 
+function remoteRequestMulti(source, target_url, target_dom, datanames, datavalues, options) {
+    //before
+    if (options['before']) {
+        eval(options['before']);
+    }
+    if ((!options['confirm']) || confirm(options['confirm'])) {
+        makePOSTRequest(source, target_url, getElement(target_dom), queryString(datanames, datavalues), options);
+        //after
+        if (options['after']) {
+            eval(options['after']);
+        }
+    }
+	return true;
+}
+
 function makePOSTRequest(source, url, target, parameters, options) {
   var http_request = false;
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
