изменение размера textarea
Есть textarea:
<html>
<head>
</head>
<body>
<textarea style="width:300px; height:80px;"></textarea>
</body>
</html>
Можно ли сделать так чтобы когда вводишь текст, то когда он не помещается в textarea по вертикали, то вертикальная полоса прокрутки не появлялась, а вместо этого textarea динамически меняла бы увеличивала свой размер по высоте? |
Можно.
|
Riim,
подскажите пожалуйста как ? |
Как-то так
<script type="text/javascript">
window.onload = function(){
document.getElementById("element").onkeyup = function(){
var getText = this.value;
var getRegs = getText.match(/^.*(\r\n|\n|$)/gim);
var setText = false;
for(var i = 0; i < getRegs.length; i++){
getText = getRegs[i].replace(/\r|\n/g, "");
setText += getText.length ? Math.ceil(getText.length / 50) : 1;
}
this.rows = setText;
};
};
</script>
<textarea rows="10" cols="50" id="element" style="overflow: hidden; min-height: 200px"></textarea>
|
Вариант тянущейся textarea ....
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>изменение размера textarea</title>
<style type="text/css">
body {
background-color:#004B52;
}
textarea{
background-color: #FF0000;
color:yellow;
}
</style>
<script language="JavaScript" type="text/javascript">
function flexibleTextarea(b) {
var a = document.getElementById(b) || b;
if (a) {
a.style.overflow = "hidden";
var e = a.rows = a.rows > 0 ? a.rows : 2;
b = a.cols = a.cols > 0 ? a.cols : 20;
var g = RegExp("([^\r\n]{" + b + "})([^\r\n])"),
f = RegExp("[^\n]{" + b + "}\n?$|[^\n]{0," + b + "}\n");
a.onkeyup = a.onkeydown = function () {
a.value = a.value.replace(g, "$1\r\n$2");
for (var c = 0, d = a.value; d.search(f) >= 0;) {
c++;
d = d.replace(f, "")
}
c += 2;
if (c < e) c = e;
a.rows = c
}
}
};
window.onload = function(){
flexibleTextarea('textarea');
flexibleTextarea('textarea1');
}
</script>
</head>
<body>
<textarea id='textarea' rows="3" cols="50" ></textarea>
<br />
<textarea id='textarea1' ></textarea>
</body>
</html>
|
рони,
а можно ли убрать лишнюю строчку внизу? |
Vovan222,
|
рони Спасибо за пример все работает, однако в IE и Opera наблюдаю такой баг: При печати текста, textarea расширяется на одну строчку по вертикали даже тогда когда в последней строчке еще есть место примерно для 10 символов
![]() |
Vovan222,
Проблема в том что если символы вводятся постоянно есть необходимость принудительно вставлять перевод строки ...пока так как есть можно ещё вариант посмотреть тут http://markup-javascript.com/2009/07...asya-textarea/ |
рони,
этот пример в опере вообще работает. А Ваш пример можно как-то исправить, ведь в FF все работает отлично |
| Часовой пояс GMT +3, время: 09:26. |