在keyup上替换值后,防止输入光标进入输入结束

时间:2016-02-08 21:45:55

标签: javascript replace caret keyup

我正在使用找到的here函数来格式化输入。它起作用,唯一的问题是当向输入添加文本时,插入符号会自动转到输入的末尾,并且不允许向输入的任何其他位置添加任何内容。

如何防止光标/光标移到keyup上输入的末尾?

function format(input, format, sep) {
    var output = "";
    var idx = 0;
    for (var i = 0; i < format.length && idx < input.length; i++) {
        output += input.substr(idx, format[i]);
        if (idx + format[i] < input.length) output += sep;
        idx += format[i];
    }
    output += input.substr(idx);
    return output;
}

$('.phoneinput').keypress( function(e){
    var phoneLength = $(this).val();
    phoneLength = phoneLength.replace(/[^\d]/g,'').length;
    if (phoneLength == 10) { 
        e.preventDefault();
    }
});

$('.phoneinput').keyup(function(e) {
    var phoneNumber = $(this).val().replace(/-/g, "");
    if (phoneNumber.length <= 10) {
        phoneNumber = format(phoneNumber, [2, 4], "-");
    }
    $(this).val(phoneNumber);
});

0 个答案:

没有答案