Próbuję utworzyć pole tekstowe, które rośnie za każdym razem, gdy list jest dodawany do niej o szerokości charakteru. To jest to, co próbuję. To nie działa. Jeśli masz podpowiedź, podziel się!

JavaScript:

function MakeWidth(el) {
        el.style.width = parseFloat(el.value.clientWidth) }

HTML:

<input id="Test" type="text" style="width: 10px;" onkeyup="MakeWidth(this)"/>
3
Mike 13 listopad 2011, 23:52

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj size & amp; length zamiast clientWidth & amp; width

http://jsfiddle.net/evd9b/5/

function MakeWidth(el) {
    el.size = parseInt(el.value.length);
}

Które powinno być odpowiednie dla Twoich potrzeb.

7
Martin. 13 listopad 2011, 20:01

Może być bardziej przydatny w użyciu atrybutu size.

<input id="Test" type="text" size="1" onkeyup="MakeWidth(this)"/>
<script>
function MakeWidth(el) {
        el.size = el.value.length

}
</script>
3
Martin. 13 listopad 2011, 20:09

To trochę trudne, ponieważ niekoniecznie znasz szerokość każdej postaci. Jedna mała sztuczka, która przychodzi na myśl, jest to, że można spróbować stworzyć ukrytą div z wpisanym znakiem, chwyć szerokość, dodaj go do szerokości pola tekstowego i zniszczyć ukryty div.

1
psalvaggio 13 listopad 2011, 19:56