No creí que fuera a tener problemas al no enviar explicitamente el evento, pero al parecer firefox si lo tiene, así que deberías enviar el evento:
Código HTML:
Cantidad: <input type="text" onBlur="calcular(event)">
y modificar la forma en que capturas el elemento que dispara el evento:
Código Javascript
:
Ver originalvar el = e.srcElement || e.target;
Acerca de que precio tome un valor dinámico según tu consulta, es relativamente sencillo:
Código PHP:
var precio=<?php echo $precio ?>;
En donde
$precio contiene el resultado de la consulta realizada a la base de datos. Espero haber resuelto tus dudas.