2016-11-06 12 views
0

Ich versuche, eine automatische Größenanpassung wie Eingabe, wie wenn der Benutzer eingeben, wird der Eingang automatisch anpassen, um den Wert innerhalb der Eingabe aber anzupassen Es scheint, ich kann es nicht richtig machen oder arbeiten. Irgendwelche Ideen, bitte helfen?passen Sie die Breite des Eingangs, die der Wert Länge des Eingangs entsprechen

$(document).ready(function(){ 
 
    $('input').on('input',function(){ 
 
    $(this).css('width',$(this).width()+$(this).val().length); 
 
    }); 
 
});
input{border:1px solid red;width:30px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 

 
<input type="text">

+0

Ihre aktuellen Code ändert sich auf jeden Fall die Breite des Eingangs, aber ich nehme es es verändert es nicht, wie Sie möchten? Vielleicht erzählen Sie uns, wie Sie es gerne hätten? –

+0

Ich möchte die Breite des Eingangs automatisch als Benutzertyp anpassen, die Breite des Eingangs sollte der Wertlänge des Eingangs entsprechen, so dass der Wert des Eingangs in den Eingang passt, wie der Wert nicht ausgeschnitten wird Der Wert enthält eine lange Zeichenfolge. –

Antwort

-1

Wenn Ihr Ziel ist es mit einem 30px Puffer nur so breit wie nötig, vielleicht zu sein, dann ist die Frage, du bist die Breite besser untermauern jedes Mal, als Neuberechnung von Grund auf neu. Es würde auch helfen, wenn Sie wüssten, wie breit ein Zeichen sein könnte, also ist es wahrscheinlich am besten, die Schriftgröße speziell einzustellen oder sogar ein anderes verstecktes Element zu verwenden, um zu messen, wie breit der gerenderte Text ist; hier habe ich ein span dafür verwenden:

$(document).ready(function(){ 
 
    $('input').on('input',function(){ 
 
    var $this = $(this); 
 
    // Get the value 
 
    var val = $this.val(); 
 
    
 
    // Put it in the hidden span using the same font information 
 
    var $hidden = $(".hidden"); 
 
    $hidden.text(val); 
 
    
 
    // Set the input to the span's width plus a buffer 
 
    $this.css('width', $hidden.width() + 30); 
 
    }); 
 
});
input { 
 
    border:1px solid red; 
 
    font-size: 14px; 
 
    width:30px; 
 
} 
 
.hidden { 
 
    font-size: 14px; 
 
    display: none; 
 
}
<input type="text"> 
 
<span class="hidden"></span> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

... und das wäre "nicht nützlich" wie, genau? –

2

I contenteditable-span in diesem Fall empfehlen die Verwendung, ich hoffe, es hilft.

#test{border:1px solid red;width:30px;}
<span id="test" contenteditable>I'm trying to make an auto resize like input</span>

+1

Ich mag diese Idee. –

+0

Ich mag die Idee, aber als meine Anforderung, bevorzuge ich Eingabe nicht span. –

Verwandte Themen