Yo lo encararía de esta forma:
la función calcular() primero que nada valida el contenido del campo de texto, usando esta expresión regular que solamente admite números y espacios:
patron = /[0-9 ]+/
Luego, se utiliza el método split() para separar la cadena por el o los espacios que contenga:
cadena.split(/\s+/)
esto transforma "12 23 34 45 56" en un vector en el que la entrada cero es 12, la entrada uno es 23, y así.
Entonces basta con recorrer ese vector para ir sumando los valores, convertidos previamente con parseInt:
for (i = 0; i < valores.length; i++)
resultado += parseInt(valores[i]);
Espero te sirva, para mayor ayuda sobre los métodos nada mejor que buscar en el
Mozilla Developer Center.
Saludos.