Авторазмер текстовой области (многострочный asp: TextBox) - PullRequest
3 голосов
/ 24 апреля 2009

У меня есть MultiLine asp: Textbox (стандартная текстовая область html для тех, кто не является asp), и я хочу, чтобы его размер был автоматически изменен, чтобы вместить весь его контент только через css. Причина этого заключается в том, что я хочу, чтобы он имел указанную высоту в веб-браузере с включенной прокруткой.

Однако я реализовал таблицу стилей печати и хочу, чтобы весь текст, расположенный в текстовой области, отображался при печати без скрытого переполнения.

Я могу вручную указать высоту текстовой области в проблеме с файлом print.css, так как поля являются необязательными, а пустое поле размером 350px не является оптимальным, и всегда существует вероятность большего объема текста, чем этот. ..

Я пытался использовать:

height: auto;
height: 100%;

В IE и Firefox соответственно, однако, они, похоже, переопределяются наличием определенного числа строк в разметке html для формы, которая должна быть сгенерирована .NET, если вы не указали высоту в asp: Тег текстового поля, кажется, он принимает только числовые измерения, такие как px em и т. Д. *

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 24 апреля 2009

То, что вы просите (решение css), невозможно.

Содержимое текстовой области не является элементами html, поэтому css не может использовать его для расчета размера текстовой области.

Единственное, что могло бы работать, это Javascript, например читать свойство scrollHeight и использовать его для установки высоты элемента. Тем не менее, свойство scrollHeight не является стандартным, поэтому может работать не во всех браузерах.

1 голос
/ 24 апреля 2009

jQuery или функция javascript для поиска и увеличения текстовых полей могут быть лучшим решением - по крайней мере, это то, что я нашел

мы используем этот набор функций и вызываем чистую форму после загрузки страницы (я знаю, что это не лучшее решение здесь, и я работаю над переходом на решение jQuery, которое более элегантно) - одна заметка, убедитесь, что ваши текстовые области имеют указаны строки или столбцы, или это не работает правильно.

function countLines(strtocount, cols)
{ 
    var hard_lines = 1; 
    var last = 0; 
    while (true) 
    { 
        last = strtocount.indexOf("\n", last + 1); 
        hard_lines++; 
        if (last == -1) break; 
    } 
    var soft_lines = Math.round(strtocount.length / (cols - 1)); 
    var hard = eval("hard_lines  " + unescape("%3e") + "soft_lines;"); 
    if (hard) soft_lines = hard_lines; return soft_lines; 
}

function cleanForm() 
{
    var the_form = document.forms[0];
    for (var i = 0, il = the_form.length; i < il; i++)
    { 
        if (!the_form[i]) continue; 
        if (typeof the_form[i].rows != "number") continue;
        the_form[i].rows = countLines(the_form[i].value, the_form[i].cols) + 1; 
    }    
    setTimeout("cleanForm();", 3000);
}
0 голосов
/ 14 мая 2010

дать автокрову jQuery () идти @

http://plugins.jquery.com/project/autogrow

0 голосов
/ 25 апреля 2009

Если вы устанавливаете строки в смехотворно высокое число, правило высоты CSS должно переопределить его на экране.

Затем в таблице стилей печати просто установите высоту на авто. Это может привести к некоторому большому пустому пространству, где все доступные строки не будут заполнены, но по крайней мере весь текст будет виден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...