Попробуй это. Работает во всех браузерах:
window.onload = function () {
var input = document.getElementById("mytext");
input.onkeypress = function () {
var evt = arguments[0] || event;
var char = String.fromCharCode(evt.which || evt.keyCode);
// Is it a period?
if (char == ".") {
// Replace it with a comma
input.value += ",";
// Cancel the original event
evt.cancelBubble = true;
return false;
}
}
};
Обновление: Пьер Луиджи указал на проблему с вышеуказанным. Это не заботится о позиции каретки, не находящейся в конце текста. Она добавит команду в конец, даже если вы добавляете некоторый текст к значению.
Решение было бы вместо добавления запятой имитировать событие нажатия клавиши для запятой. К сожалению, способ отправки синтетических событий в разных браузерах, кажется, очень разнообразен и не так прост. Я посмотрю, смогу ли я найти хороший и общий метод для этого.