Hola.
No sé si entiendo bien cómo quieres que te funcione la calculadora. ¿Quieres que la comprobación de que los campos sean numéricos se haga al pulsar alguno de los botones (o sea, después de haber permitido que se introduzcan datos erróneos)? En ese caso, puedes utilizar la función isNaN para ver si la variable es numérica o no (Is Not a Number). Con esto, la función calcula quedaría así:
Código PHP:
function calcula(operacion){
var operando1 = document.calc.operando1.value;
var operando2 = document.calc.operando2.value;
if ( isNaN(operando1) || isNaN(operando2) ) {
alert ("Error: uno de los operandos no es numérico");
} else {
var result = eval(operando1 + operacion + operando2);
document.calc.resultado.value = result;
}
}
Si lo que quieres es que no se pueda escribir nada más que números en las cajas de texto de los operandos (creo que sería lo más efectivo), lo único que tendrías que hacer es añadir la validación que haces con validanum en el evento onKeyPress de las cajas de texto de los operandos:
Código PHP:
<input type="Text" name="operando1" onKeyPress="validanum()" size="20">
<input type="Text" name="operando2" onKeyPress="validanum()" size="20">
En cualquier caso, poner la validación en la caja del resultado no te va a valer de mucho puesto que se supone que ahí nunca se va a escribir.
Espero que te sirva. Un saludo
P.D. Por cierto, la manera de capturar la tecla pulsada (que haces en validanum) no funciona con Firefox.