代码之家  ›  专栏  ›  技术社区  ›  SeaBass

是否将空格视为字符?

  •  2
  • SeaBass  · 技术社区  · 7 年前

    我运行下面的代码来根据内容调整输入的宽度。它工作得很好,除非在末尾添加空格,否则文本将从框中向左移动。我怎样才能像对待其他字符一样对待空格,这样它就不会打破方框?

    $.fn.liquidWidth = function(text, font) {
    
      if (!$.fn.liquidWidth.fakeEl) $.fn.liquidWidth.fakeEl = $('<span>').hide().appendTo(document.body);
    
      $.fn.liquidWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));
    
      var width = $.fn.liquidWidth.fakeEl.width();
    
      if (this.data('liquid-min-width') != '' && width < this.data('liquid-min-width')) {
        width = this.data('liquid-min-width');
      } else if (this.data('liquid-max-width') != '' && width > this.data('liquid-max-width')) {
        width = this.data('liquid-max-width');
      }
      if (width < 8) {
        width = 8;
      }
    
      return width;
    };
    $(document).on('input', '.liquid-width', function() {
      var inputWidth = $(this).liquidWidth();
      $(this).css({
        width: inputWidth
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p>Type something followed by a bunch of spaces...</p>
    <input type="text" class="liquid-width" placeholder="text">
    2 回复  |  直到 7 年前
        1
  •  3
  •   Asons Oliver Joseph Ash    7 年前

    input

    span white-space: pre

    &nbsp;

    $.fn.liquidWidth = function(text, font) {
    
    	if (!$.fn.liquidWidth.fakeEl) $.fn.liquidWidth.fakeEl = $('<span>').hide().appendTo(document.body);
    
    	$.fn.liquidWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));
    
    	var width = $.fn.liquidWidth.fakeEl.width();
    
    	if( this.data('liquid-min-width') != '' && width < this.data('liquid-min-width') )
    	{
    		width = this.data('liquid-min-width');
    	}
    	else if( this.data('liquid-max-width') != '' && width > this.data('liquid-max-width') )
    	{
    		width = this.data('liquid-max-width');
    	}
    	if( width < 8 ) { width = 8; }
    
    	return width;
    };
    $(document).on('input', '.liquid-width', function() {
    	var inputWidth = $(this).liquidWidth();
    	$(this).css({
    		width: inputWidth
    	});
    });
    span {
      white-space: pre
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p>Type something followed by a bunch of spaces...</p>
    <input type="text" class="liquid-width" placeholder="text">
        2
  •  1
  •   Halko Karr-Sajtarevic    7 年前

    white-space:pre span