znamilya
6/27/2014 - 8:49 AM

Обновление поля в ходе набора

Обновление поля в ходе набора

var input = document.getElementById('input');

input.oninput = liveFieldUpdate.bind(input, toUpper);

function liveFieldUpdate (updateFunction) {
    var start    = this.selectionStart;
    var end      = this.selectionEnd;
    var newValue = updateFunction(this.value);

    if (newValue !== this.value && newValue.length != this.value.length) {
        start -= 1;
        end   -= 1;
    }

    this.value = newValue;
    this.setSelectionRange(start, end);
}

function toUpper (val) {
    return val.toUpperCase();
}
<input type="text" id="input">