Потому что ф-ция
replace не модифицирует саму строку, она лишь возвращает результат изменений. И проверка не нужна.
<script>
function check(obj) { // delet*!*e*/!* зарезервированное слово...
obj.value=obj.value.replace(/[а-я]*/gi, '')
};
</script>
<input type='text' onkeyup='check(this)' id='text' onchange='check(this)' value="">