Solutions using value.toUpperCase seem to have the problem that typing text into the field resets the cursor position to the end of the text. Solutions using text-transform seem to have the problem that the text submitted to the server is still potentially lowercase. This solution avoids those problems:
function handleInput(e) {_x000D_
var ss = e.target.selectionStart;_x000D_
var se = e.target.selectionEnd;_x000D_
e.target.value = e.target.value.toUpperCase();_x000D_
e.target.selectionStart = ss;_x000D_
e.target.selectionEnd = se;_x000D_
}
_x000D_
<input type="text" id="txtTest" oninput="handleInput(event)" />
_x000D_