Pasa que hay que usar arrays porque en un loop se va a sobreescribir el nombre y el valor cuando exista varios valores seleccionados en un select multiple o en un casillas de verificación.
Es bastante lioso pero aca va algo
Código HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<br />
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<br/>
<input type="checkbox" name="check" value="check1" id="ch1"/>
<label for="ch1">check1</label>
<input type="checkbox" name="check" value="check2" checked="checked" id="ch2"/>
<label for="ch2">check2</label>
<br />
<input type="radio" name="radio" value="radio1" checked="checked" id="r1"/>
<label for="r1">radio1</label>
<input type="radio" name="radio" value="radio2" id="r2"/>
<label for="r2">radio2</label>
<input type="text" name="miInput" value="el valor del input name=miInput">
<input type="submit" value="Mostrar">
</form>
<p><tt id="results"></tt></p>
<script>
var valores;
$('form').submit( function (){
valores = new Array; //En este array se va a crear indices con los nombres de los campos
var str = $(this).serialize(); //Obtengo todos los campos y valores del formulario
str = str.split('&');//Corto por el ampersand para que quede name=value
//recorro str
jQuery.each(str, function (v, k){
k = k.split('='); //en cada valor corto por el signo igual, en el indice 0 tengo el nombre del campo, en el indice 1 el valor del campo, enconces guardo en un array
//Compruebo si ya se ha definido el array (para que no sobreescriba los select multiple o lo checkbox)
if(valores[k[0]] == undefined){ //Para que no me sobreescriba en los select multiples o checkbox
valores[k[0]] = new Array;
}
//agrego los valores
valores[k[0]].push(k[1]);
});
mostrarName('multiple');//paso el nombre del campo como parámetro
return false;
});
function mostrarName(name){
//muestro el o los valor del input name=multiple pasado como parámetro (puede haber varios chekeados)
for (i = 0; i < valores[name].length; i++){
alert(valores[name][i]);
}
}
</script>
</body>
</html>