Hola:
Pues cuando modifiques alguno de los controles puedes usar el evento change, y con él hacer las comprobaciones:
<input type="text" name="dati1" onchange="chequea(this)" />
Y ese chequea()...
function chequea(elemento) {
if (elemento.form["dato1"].value != "" && elemento.form["dato2"].value != "" && elemento.form["almacen"].value == "") elemento.form.submit();
}
Esas líneas significan que el formulario se envía cuando haya datos en los controles "dato1" y "dato2", y el control almacén esté vacío...
Supongo que sabrás modificarlo a tus necesidades...
Saludos