2009-04-24 31 views
3

私はマルチサイズのasp:Textbox(非ASPユーザー向けの標準HTMLテキストエリア)を持っています。これは、スクロールを有効にして、Webブラウザーで指定された高さにしたいということです。テキスト領域を自動サイズ調整する(複数行asp:テキストボックス)

しかし、私は印刷スタイルシートを実装しており、オーバーフローが隠されずに印刷されたときに、テキストエリアにあるすべてのテキストを表示したいと考えています。

私は手動でprint.cssファイルの問題のテキストエリアの高さを指定することができます。これは、フィールドがオプションで、350pxの空白ボックスが最適ではなく、常にこれよりも多くのテキストが存在する可能性があります...私が使用して試してみました

:IEとFirefoxで

height: auto; 
height: 100%; 

はそれぞれまだこれらは、必要があり、フォームのHTMLマークアップで指定した数の行の存在によって上書きされているように見えますasp:Textboxタグで高さを指定しないと.NETによって生成されますが、これは商業的測定値を受け入れるだけですsu chとしてpxのemなど...

アイデア?

答えて

2

あなたが求めているのは(CSS解決策)できません。

テキストエリアの内容はhtml要素ではないため、テキストエリアのサイズを計算するためにCSSでは使用できません。

動作できる唯一のものはJavascriptです。 scrollHeightプロパティを読み取り、それを使用して要素の高さを設定します。それでも、scrollHeightプロパティは標準ではないため、すべてのブラウザで機能しない可能性があります。

+0

私はこれを疑っていました:(清算してくれてありがとう! –

+0

...また、updatepalelを使用しているときにjavascriptとjqueryでは不可能です。 –

1

jQueryのか、見つけて、テキストボックスに大きいが、最善の解決策かもしれないようにするjavascript関数 - 少なくとも、私たちはこの関数のセットを使用して、ページがロードされた後(私はこれを知っているきれいなフォームを呼び出す

を見つけたものthatsのここで最善の解決策ではなく、より洗練されたjQueryソリューションに移行するために取り組んでいます) - 1つのメモは、テキストエリアに行と列が指定されていることを確認します。

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

おかげ@やってみる、それは動作しますが、私はそれは私が唯一のそれのようにレンダリングされた印刷媒体に影響を与えないと思っ述べただけのようにCSSをする必要がありますブラウザのように。 –

0

行を大量に設定すると、CSS高さのルールが画面上で上書きされます。

次に、印刷スタイルシートで高さをautoに設定するだけです。これにより、使用可能なすべての行がいっぱいになっていないが、少なくともすべてのテキストが表示される大きな空白が発生する可能性があります。

関連する問題