Eu tinha esquecido de colocar a parte do Array. Aproveitei e troquei a var value para o item do array diretamente.
(Arrumei o break; e os 'for' duplicados.
Agora ele pega o que está selecionado e também o que não está, adicionando no array um elemento 'em branco'.
Como faço para ele ignorar o elemento não selecionado?)
function pegaElemento(Form){
var cForm = document.forms[Form]
var formArray = new Array();
var campos = new Array("","nome","preco","tamanho","cor","manga");
for(i=0; i<cForm.elements.length; i++){
var campo = cForm.elements[i].name;
// Se o item do form estiver no array de campos definido pelo usuário, adiciona ao array do form
if ((','+campos.toString()+',').indexOf(',' + campo + ',')!==-1) {
switch(cForm.elements[i].type)
{
// Indefinido
case 'undefined': formArray[i] = "nenhum"; break;
// Select one
//case 'select-one':
// formArray[i] = cForm.elements[i].selectedIndex.value;
// break;
// Select-Multiple
case 'select-multiple':
var myArray = new Array();
if(cForm.elements[i].selected == true)
myArray[myArray.length] = cForm.elements[i].value;
formArray[i] = myArray;
break;
// Radio
case 'radio':
if(cForm.elements[i].checked == true)
formArray[i] = cForm.elements[i].value;
break;
// Checkbox
case 'checkbox':
if(cForm.elements[i].checked == true)
formArray[i] = cForm.elements[i].value;
break;
// Padrão
default: formArray[i] = cForm.elements[i].value; break;
}
} //if
} // for
}
E aqui o formulário que estou usando:
<form name="item1">
<fieldset>
<legend>Item 1 R$10,00</legend>
<input type="hidden" value="Item 1" name="nome" class="hidden" /><br />
<input type="hidden" value="10.00" name="preco" class="hidden" />
<label for="tamanho">Tamanho</label>
<select name="tamanho">
<option selected="selected" value="P">P</option>
<option value="M">M</option>
<option value="G">G</option>
</select><br />
<label for="cor">Cor</label>
<select name="cor">
<option selected="selected" value="Vermelho">Vermelho</option>
<option value="Azul">Azul</option>
</select><br />
<label for="manga">Manga</label>
<input type="radio" name="manga" value="Curta" /> Curta<br />
<input type="radio" name="manga" value="Comprida" /> Comprida
</select><br />
<input type="submit" class="bt" onclick="pegaElemento(this.form.name)" value="Comprar" />
</fieldset>
</form>
Edição feita por: lanlan, 25/05/2008, 16:03.