formularios y javascript

Maria
17 de Abril del 2002
Hola a todos, tengo este código:

<html>

<title>Title here!</title>
<script language="javascript">
function pasar(form){ document.dos.texto.value=form.opciones[form.opciones.selectedIndex].text;
}

</script>

<head>
<form name="uno">
<select name="opciones">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<input type="button" onClick="pasar(this.form)" value="pasar">
</form>

<form name="dos">
<input type="text" name="texto">
</form>

</head>
</body>
</html>

Y lo que tengo es que cada vez que pulso el botón pasar me escribe el contenido del combo "opciones", en el cuadro de texto. Pero mi problema está en que en el cuadro de texto tengo que poner una expresión matemática por ejemplo de la siguiente manera:

1+(2*3)

Y lo que ahora me pasa es que si pongo 1 e intento añadir 2 se cambia el cuadro a 2 y desparece todo lo que tenía escrito, ¿cómo puedo hacerlo?

Seguro que es una tontería pero no tengo ni idea de javascript.

Muchas gracias

Maria





Enrique
17 de Abril del 2002
hola, lei tu pregunta, y tu quieres hacer algo asi como una calculadora, que puedas entrar valores de mas de un digito, pero cuando introduces el segundo, se borra el primero?
entendi bien??

solo en tu funcion pasar() haces esto:

function pasar(form){ document.dos.texto.value=(document.dos.texto.value)+(form.opciones[form.opciones.selectedIndex].text);
}

espero que salga. jeje es lo que se me ocurre ahorita


joaquin
17 de Abril del 2002
Puedes poner la expresión tal cual, con la única precaución de saber que javascript va a considerar los datos obtenidos de un formulario como texto, y por tanto 1 + 2 no sería 3, sino "12" ( "1" + "2" ). Para evitar este inconveniente bastará con que hagas p.e. una multiplicación por 1 del dato obtenido, con lo cual lo tomará como numérico y al multiplicarlo lo dejará igual, a continuación puedes operarlo como un valor numérico normal. Como ejemplo prueba a sustituir tu función por esta otra:

function pasar(form){ document.dos.texto.value=( ( form.opciones[form.opciones.selectedIndex].text * 1 ) + 2 ) * 3;
}

Bueno, espero que te sea de ayuda. Saludos:

Joaquin