Jump to content
  • 0

Высота поля TEXTAREA


ShumNo
 Share

Question

Добрый день

Есть поле TEXTAREA

Для наглядности код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>TEXTAREA</title>
</head>
<style type="text/css">
textarea {
width:300px;
font-family:'Verdana', 'Arial', Sans-Serif;
font-size:12px;
color:#333;
padding:3px;
border:1px solid #ccc;
}
</style>
<body>
<textarea readonly>
Весь текст выделяется при щелчке мышкой по полю textarea. Весь текст выделяется при щелчке мышкой по полю textarea. Весь текст выделяется при щелчке мышкой по полю textarea.
</textarea>
</body>
</html>

1. Возможно ли, чтобы высота поля TEXTAREA подгонялась под кол-во текста?

2. Возможно ли, чтобы при щелчке мышкой по этому полю автоматически выделялся весь текст для удобства копирования?

Подскажите пожалуйста :ph34r:

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Спасибо за пример. Благодаря ему нашел нужные ключевые слова и нашел вот такой код и немного подправил:

<textarea style="width:600px; font-size:12px; height:70px;" onfocus="this.style.height=(a=(e=parseInt(this.style.fontSize)*(this.value.split('\n').length+2)) >(e2=200)?e2:e)<100?100:a+'px';">
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
</textarea>

Проверил в FF и IE8 - работает. При щелчке мышки по полю оно открывается до 200px (изначально 70) если материала в нем больше то появляется скрол.. хотя скрол висит постоянно.

А теперь вопросы:

Можно ли "onfocus" заменить на то, что обрабатывается в момент загрузки страницы, чтобы эффект применялся без необходимости нажимать на поле?

Можно ли вынести стили в css? При попытке это сделать скрипт перестает работать. Насколько я понял скрипт их использует непосредственно в стиле в поле

Link to comment
Share on other sites

  • 0

Спасибо за пример, но это несколько не то, так как там нужно пользователю нажимать кнопки увеличения и уменьшения высоты textarea. Выше пример лучше так как пользователь все равно захочет скопировать текст и оно автоматически по щелчку увеличится для большего обзора, вот только это бы раскрытие сделать не по onclick или onfocus, а по автоматическому событию.

Вот только я не знаю ява скрипт какие там есть команды более подходящие :ph34r:

Link to comment
Share on other sites

  • 0

Слушай, а попробуй так дружище :ph34r:

<textarea style="width:600px; font-size:12px; height:70px;"  onkeyup="this.style.height=(a=(e=parseInt(this.style.fontSize)*(this.value.split('\n').length+2)) >(e2=200)?e2:e)<100?100:a+'px';">
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
</textarea>

Link to comment
Share on other sites

  • 0

Увы onkeyup не работает.

Попробовал onBlur но оно срабатывает только после потери фокуса, который сначало надо сделать (вариант хуже чем онклик)

По логике (моей) должен был помочь onLoad но что-то работать оно отказалось.

Пойду дальше искать команды..

Link to comment
Share on other sites

  • 0

На странице множество textarea полей с разным кол-во текста в каком-то одна строчка, а в каком-то их 100. Хотелось бы, чтобы при загрузке страницы высота этих полей подгонялась под высоту, которую занимает текст, если там много текста например под 300px (а дальше скрол), а если текста мало, то по умолчанию применялась высота скажем под одну строчку.

В скрипте, что выше все устраивает, кроме как того, что оно не подгоняется, а просто увеличивается до определенной высоты и в добавок только по щелчку мышки.

Link to comment
Share on other sites

  • 0

Кажется нашел код. Ща откатаю и напишу :ph34r:

<style type="text/css">
#taID {
height:60px;width:400px;
}
</style>
<script type="text/javascript">
var taHeight = function () {
document.getElementById("taID").style.height = document.getElementById("taID").scrollHeight+"px";
}
if (window.attachEvent) window.attachEvent("onload", taHeight);
window.onload = taHeight;
</script>

<textarea wrap id="taID" onkeypress="taHeight()">
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
</textarea>

Проверил работает в IE6 IE7 IE8 FF3 Opera 9.6 :)

При добавлении текста в textarea поле автоматически увеличивается убирая тем самым скрол.

Из недостатков небольших, что это увеличение идет походу бесконечно, что не очень приятно, но в принципе для меня это не критично.

Хотя уверен как из предыдущего примера функция "предела увеличения + скрол" не очень сложная.

Осталось узнать, как сделать, чтобы при клике на поле автоматически выделялся весь текст..

Да тема наверное больше в раздел по яву скрипту подходит..

Edited by ShumNo
Link to comment
Share on other sites

  • 0

Вот такой возможно очень кривой код получился склееный из различных других кодов + слепленный человеком, который не в зуб ногой или как свинья в апельсинах в Javascript, но тем не менее работает! в FF3 так точно

Теперь можно по кнопке выделить весь текст. Возможно этой кнопкой стоило бы быть само поле, но вдруг кто-то захочет скопировать кусочек только :ph34r:

Да для выделения пришлось textarea обернуть в form. Интересно есть ли метод проще.. хотя куда уж проще..

<style type="text/css">
#taID {
height:40px;width:400px;
}
</style>
<script type="text/javascript">
var taHeight = function () {
document.getElementById("taID").style.height = document.getElementById("taID").scrollHeight+"px";
}
if (window.attachEvent) window.attachEvent("onload", taHeight);
window.onload = taHeight;

function highlight(x){
document.forms[x].elements[0].focus()
document.forms[x].elements[0].select()
}
</script>
<br><a href="java script:highlight(0)" onmouseover="window.status='';return true">Выделить весь текст в поле textarea</a><br>
<form action= method=post>
<textarea wrap id="taID" onkeypress="taHeight()">
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
Увеличение размера поля textarea по щелчку мышки.
</textarea>
</form>

Да и чета textarea меньше 40px быть не хочет... пробовал высоту и 10 и 0 все равно на 40 остается

Edited by ShumNo
Link to comment
Share on other sites

  • 0

Ага сам не ожидал. Чета гуглил гуглил и все не то, а тут решил повбивать ключевые слова без русского текста и глянуть, что там за бугром делается :ph34r:

Как максимум осталось найти функцию максимального размера поля, а дальше, чтобы скрол появлялся при определённом размере, но это уже не по моим силам, так как чую это надо доделывать уже существующую функцию, которая расширяет окошко при появлении текста.

И косяки есть типа такого, что при переходе на след строчку в поле появляется скрол, но если стрелочками прокрутить куда-нибудь, то он исчезнет сразу (FF3), но для меня это нормально так как текст уже есть заранее в поле.

Конечно на jQuery куда красивее варианты, но там и библиотека одна 50кб кода :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy