Как получить ширину вводимого текста (не поля ввода) [дубликаты]

0

Я хочу знать ширину фактического текста в поле ввода, а не в поле ввода. Существует ли эквивалент

$('#mybox').val().width();

который точно определяет, сколько пикселей занимает текст? (Этот код, очевидно, не сработает.)

  • 0
    Вы пытались поместить текст в невидимый элемент и измерить это?
Теги:
input

2 ответа

1

Что-то вроде этого

$('input').on('keyup', function() {
    var el = $('<div />', {
        text : this.value, 
        css  : {display : 'table-cell'}
    }).appendTo('body');

    var computedStyle = typeof this.currentStyle != 'undefined' ? 
            this.currentStyle : 
            document.defaultView.getComputedStyle(this, null);

    $.each(computedStyle, function(_, style) {
        if (style.indexOf('display') == -1 && style.indexOf('width') == -1)
            el.get(0).style[style] = computedStyle[style];
    });

    var w = el.prop('clientWidth');
    $(el).remove()

    $('#width_output').html(w + 'px')
});

FIDDLE

0

Получил это отсюда: вычислить ширину текста с помощью JavaScript

String.prototype.width = function(font) {
  var f = font || '12px arial',
      o = $('<div>' + this + '</div>')
            .css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f})
            .appendTo($('body')),
      w = o.width();

  o.remove();

  return w;
}

Теперь вы можете использовать:

$('#mybox').val().width();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню