[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
質問
現在、勤めている会社の社内販売用アプリケーションを作成しているのですが、ユーザーが配送先を変更するためのフォームを用意しました。
今、私は、メインの住所の詳細のために使用しているテキストエリアが、その中のテキストの領域を占有し、テキストが変更された場合に自動的にリサイズされれば、もっときれいに見えると思います。
これが現在のスクリーンショットです。
何かアイデアはありますか?
クリス
良いポイントですが、リサイズしてほしい理由があります。私は、テキストエリアが占める面積を、その中に含まれる情報の面積にしたいのです。スクリーンショットにあるように、固定されたテキストエリアがある場合、垂直方向のかなりのスペースを占めます。
フォントを小さくすることもできますが、アドレスは大きく読みやすくする必要があります。テキスト エリアを小さくすることはできますが、住所の行が 3 行も 4 行も (1 行は 5 行も) 必要な人がいて、問題が発生します。ユーザーにスクロールバーを使用させる必要があるのは、大きな問題です。
私はもう少し具体的に説明する必要があると思います。私は垂直方向のリサイズが目的であり、幅はそれほど重要ではありません。それで起こる唯一の問題は、ISO 番号 (大きな "1") が、ウィンドウ幅が小さすぎる場合 (スクリーンショットでわかるように) アドレスの下に押し込まれることです。
ギミックを持つことではなく、ユーザーが編集できるテキスト フィールドを持ち、不必要なスペースを取らず、その中のすべてのテキストを表示することなのです。
もし誰かがこの問題にアプローチする別の方法を思いついたら、私はそれを受け入れることができます。
少し奇妙な動作をしていたので、コードを少し修正しました。今入力された文字を考慮しないので、キーアップ時にアクティブにするように変更しました。
resizeIt = function() {
var str = $('iso_address').value;
var cols = $('iso_address').cols;
var linecount = 0;
$A(str.split("\n")).each(function(l) {
linecount += 1 + Math.floor(l.length / cols); // Take into account long lines
})
$('iso_address').rows = linecount;
};
どのように解決するのですか?
Facebookでは、人の壁に書き込むと、縦方向にのみリサイズされます。
水平方向のリサイズは、折り返しや長い行のために混乱するように思えますが、垂直方向のリサイズはかなり安全で良いように思えます。
私の知っているFacebook利用初心者は、誰一人としてそれについて言及したり、混乱したことはありません。私はこれを、「どうぞ、実装してください」と言うための逸話的証拠とします。
これを行うためのいくつかの JavaScript コードは プロトタイプ (を使っています(私がよく知っているのはこれなので)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script language="javascript">
google.load('prototype', '1.6.0.2');
</script>
</head>
<body>
<textarea id="text-area" rows="1" cols="50"></textarea>
<script type="text/javascript" language="javascript">
resizeIt = function() {
var str = $('text-area').value;
var cols = $('text-area').cols;
var linecount = 0;
$A(str.split("\n")).each( function(l) {
linecount += Math.ceil( l.length / cols ); // Take into account long lines
})
$('text-area').rows = linecount + 1;
};
// You could attach to keyUp, etc. if keydown doesn't work
Event.observe('text-area', 'keydown', resizeIt );
resizeIt(); //Initial on load
</script>
</body>
</html>
PS: 明らかにこのJavaScriptコードは非常に素朴でよくテストされていませんし、おそらく小説を含むテキストボックスには使いたくありません。
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] オートリサイズによるテキストエリアの作成
-
[解決済み】Textarea Auto height [重複]。
-
[解決済み] PHPやJavaScriptを使わずに、textareaを内容に合わせて伸縮させる方法はありますか?
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].