我正在使用找到的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);
});