Да, похоже, что некоторые браузеры перемещают курсор до конца, когда значение обновляется. Вы могли бы сделать это:
$("#test").keyup(function(){
var upper = this.value.toUpperCase();
if (this.value != upper)
this.value = upper;
});
, который изменит значение только в том случае, если его необходимо изменить. Однако это все еще оставляет проблему с тем, что если вы наберете abd
, переместитесь влево, нажмите c
, чтобы получить abcd
, курсор все равно будет перемещен в конец.