У меня заработал сл код
jsfiddle.net/nbEZA/3/
Здесь возвращается фокус только после того как значение было задано по нажатию на спан.
Я вижу происходящее у Вас так:
onmousedown — снимаем фокус с input
onclick — вызываем обработчик, повешенный на span
$('#input').focus(); — переводил фокус обратно (зачем перед изменением, тк потом все равно повторяется?)
$('#input').val('42'); — изменяет значение input (без onchange события)
$('#input').focus(); — переводил фокус обратно, но если фокус уже на элементе, то получаем возможность отменить по esc, тк фокус не менялся, а значение поменялось без onchange (но почему так не скажу)