Hola:
Otra posibilidad sería duplicar el campo (también el atributo name) y solo tener habilitado/visible 1 de ellos:
Te muestro el código de una página mía:
Código:
<select name="categoria" id="selecate">
...
</select>
<input type="checkbox" onclick="marcar(this.checked)" id="cheq"/><label for="cheq">otro</label>
<input type="text" name="categoria" id="textcate" disabled/>
Y solo habilito con javascript un elemento:
Código:
<script>
function marcar(q) {
document.getElementById("textcate").disabled = !q;
document.getElementById("selecate").disabled = q;
}
</script>
De la misma manera se puede mostrar/ocultar con un par de líneas más en la función marcar (modificando estilos)
En el ejemplo (copy & paste) es un select y un text, pero es válido para cualquier combinación...
Saludos