By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,516 Members | 1,107 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,516 IT Pros & Developers. It's quick & easy.

automatically resizing textarea (IE problem)

P: n/a
Hi, I wrote an auto resizing textarea:

function myMax(anumber, another) {
if (anumber > another) {
return anumber;
}
return another;
}
function resizeTextArea(t,minCols,minRows) {
var lines = 0;
if (t.getAttribute("cols") == null) t.setAttribute("cols",minCols);
if (t.getAttribute("rows") == null) t.setAttribute("rows",minRows);
textLine = t.value.split("\n");

// get lines of textbox
lines = t.value.split("\n").length;

// get longest row of textbox.
var max = 0;

for (i=0;i < textLine.length;i++) {
if (parseInt(textLine[i].length) >
parseInt(t.getAttribute("cols"))) {
lines += Math.floor(parseInt(textLine[i].length) /
parseInt(t.getAttribute("cols"))) ;
}
}
t.setAttribute("rows",myMax(lines+1,minRows));
}

In Firefox this works really fine!

But in IE the text area grows very strange. If I add a line, after a
while there seems to be a problem with spacing.

Anybody has some ideas?
arash

Nov 29 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
btw.
you call it like this

<textarea onkeypress="resizeTextArea(this,10,2)">
here is some text....
</textarea>

Nov 29 '05 #2

P: n/a
hi arash,
check this out:

<html>
<head></head>

<body>
<script>
function getMax(anumber, another) {
return((anumber > another) ? anumber : another);
}

/************************************************** ***************************
* @SDESCRIPTION: automatically resizes a textarea depending on the
input
* @DESCRIPTION: call the function in the onkeyup-event of the tarea.
* @PARAM: t [textarea]: the textarea you want to handle
* @PARAM: minRows [int]: minimum amount of rows
* @PARAM: minCols [int], OPTIONAL: minimum amount of columns.
************************************************** ***************************/
function resizeTextArea(t, minRows, minCols) {
t.rows = minRows;
t.setAttribute("wrap", "off");
t.style.overflow = "auto";

lines = t.value.split("\n");

if (arguments.length > 2) {
t.cols = minCols;
maxChars = lines[0].length;
for(i = 1; i < lines.length; i++) {
currentLength = lines[i].length;
if (currentLength > maxChars) maxChars = currentLength;
}
t.cols = getMax(maxChars, minCols);
}
t.rows = getMax(lines.length + 1, minRows);
}
</script>

<textarea onkeyup="resizeTextArea(this, 10);"></textarea>
<textarea onkeyup="resizeTextArea(this, 10, 5);"></textarea>
</body>
</html>

ar********@hotmail.com wrote:
Hi, I wrote an auto resizing textarea:

function myMax(anumber, another) {
if (anumber > another) {
return anumber;
}
return another;
}
function resizeTextArea(t,minCols,minRows) {
var lines = 0;
if (t.getAttribute("cols") == null) t.setAttribute("cols",minCols);
if (t.getAttribute("rows") == null) t.setAttribute("rows",minRows);
textLine = t.value.split("\n");

// get lines of textbox
lines = t.value.split("\n").length;

// get longest row of textbox.
var max = 0;

for (i=0;i &lt; textLine.length;i++) {
if (parseInt(textLine[i].length) &gt;
parseInt(t.getAttribute("cols"))) {
lines += Math.floor(parseInt(textLine[i].length) /
parseInt(t.getAttribute("cols"))) ;
}
}
t.setAttribute("rows",myMax(lines+1,minRows));
}

In Firefox this works really fine!

But in IE the text area grows very strange. If I add a line, after a
while there seems to be a problem with spacing.

Anybody has some ideas?
arash


Nov 30 '05 #3

P: n/a
gabru wrote:
<html>
<head></head>

<body>
<script>
Not at all Valid HTML. <URL:http://validator.w3.org/>
function getMax(anumber, another) {
return((anumber > another) ? anumber : another);
}
Math.max() exists since the very first versions of JavaScript
and JScript, and it was specified in ECMAScript Edition 1.
[top post]


<URL:http://jibbering.com/faq/faq_notes/pots1.html>
PointedEars
Nov 30 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.