Adición de coma como separador de miles (javascript): la salida se elimina en su lugar

Estoy intentando ajustar dinámicamente un valor numérico ingresado para incluir miles de separadores

Aquí está mi código:

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}


<input type="number"  onkeyup="this.value=addCommas(this.value);" />

Sin embargo, cuando ingreso números después del 4, el campo se borra.

¿Alguna idea de donde me voy mal? Si hay una solución jQuery, ya la estoy utilizando en mi sitio.

Respuestas a la pregunta(5)

Su respuesta a la pregunta