Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Длина input.text на длину данных (https://javascript.ru/forum/dom-window/24701-dlina-input-text-na-dlinu-dannykh.html)

tarya 11.01.2012 04:26

Длина input.text на длину данных
 
Добрый день. Мне нужно сделать элемент input.text который бы раздвигался по мере ввода в него текста. Например при пустом будет зазор на 10 пикселей примерно, но когда пишут - раздвигается? Как такое реализовать?

Спасибо.

ksa 11.01.2012 09:35

Цитата:

Сообщение от tarya
Как такое реализовать?

На этом форуме предлагался примерно такой вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
* {
	margin: 0;
	padding: 0;
}
.container {
	position: relative;
}
#calc {
	position: absolute;
	top: 0;
	left: 0;
	border: 1px solid;
	font-family: Tahoma;
	font-size: 12pt;
}
.box {
	width: 10px;
	border: 1px solid red;
}
.box input {
	width: 100%;
	border: 0;
	font-family: Tahoma;
	font-size: 12pt;
}
</style>
<script type="text/javascript">
function Go() {
	var val,ot=document.getElementById('txt');
	val=ot.value;
	var oc=document.getElementById('calc');
	oc.innerHTML=val;
	ot.parentNode.style.width=oc.offsetWidth+'px';
}   
</script>
</head>
<body>
<form>
	<div class='container'>
		<div id='calc'></div>
		<div class='box'>
			<input type='text' id='txt' onkeyup='Go()' />
		</div>
	</div>
</form>
</body>
</html>

Pavel M. 11.01.2012 10:49

была такая тема http://javascript.ru/forum/dom-windo...shirinojj.html

GuardCat 11.01.2012 11:08

Вот вариант с size. Но без моноширинного шрифта (зато любого размера) не обойтись. Можно, конечно, пошаманить с maxlength и зазорами, но это от лукавого.
<!DOCTYPE HTML>
<html>
<head>
  <style type = "text/css">
    .resiz {
      font-size: 15px;
      font-family: monospace;
    }
  </style>
</head>
<body>   
  <input type = "text" id = "needResize" size = "1" class = "resiz">
  <input type = "text" id = "needResize2" size = "3" class = "resiz">
  <script>
     makeRubber = (function () {
       function boomer() {
         this.size = this.value.length + 1;
       }
       return function (input) {
         input.onkeydown = boomer;
         input.onkeyup = boomer;
         input.onkeydown();
       }
    })()
    makeRubber(document.getElementById("needResize"));
    makeRubber(document.getElementById("needResize2"));
  </script>
</body>

tarya 13.01.2012 03:35

Благодарю! Теперь ясно куда копать!


Часовой пояс GMT +3, время: 15:48.