Non so se ho capito, cmq non č che il valore non sia aggiornato, č che usando l'evento onkeypress prima esegue la funzione e poi il comando associato alla key premuta.
Cioč tipo, se premi PgUp, PRIMA viene eseguita la funzione e poi la select scorre verso l'alto.
Se invece usi onkeydown succede il contrario, che č quello che intendevi tu credo. Il valore selezionato cmq č indipendente dagli eventi (a meno che con la funzione tu non agisca direttamente sulla select).