<p>I need to change in a text input the character '.' to ',' while typing.
In IE I change the keyCode event property in the keypress event, like this</p>

<pre><code>document.getElementById('mytext').onkeypress = 
 function (evt) {
  var e = evt || window.event;
  if (e.keyCode &amp;&amp; e.keyCode==46)
   e.keyCode = 44;
  else if (e.which &amp;&amp; e.which==46) {
   e.which = 44;
  }
 };
</code></pre>

<p>but it seemes that in Firefox it's impossible to change characters typed in key events. 
Any suggestions?</p>

Try this. It works on all browsers:
```
```
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;
        }
    }
};
```
```
Update:
Pier Luigi
pointed out a problem with the above. It doesn't take care of the caret position not being at the end of the text. It will append the command to the end even if you're inserting some text to the value.
The solution would be, instead of appending a comma, to simulate a keypress event for the comma key. Unfortunately the way dispatching of synthetic events work in different browsers seems to show a lot of variety and isn't an easy feat. I'll see if I can find a nice and generic method for it.