• ベストアンサー

textareaの指定文字数以上の表示について

こんにちは 当方PHPにてある管理サイトを作っています。 textareaの要件で、最大入力値2000文字のエリアで、 20文字を越えたら ・・・・ と表示する事になりました。 replaceなどを使って変換してもいいのですが、 元データが失われ、さらには何レコードもデータが存在するので、 見え方だけを変更したいのですが、可能でしょうか。 尚、初期画面ではそのtextフィールドは編集不可で、 クリックして始めて編集可能となります。 編集可能の時は2000文字表示させるつもりです。 無知で申し訳ありません、ご教授願えないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

#1、#2です。 >そのイベントも理解しているつもりではいたのですが、 >20文字以上は「・・・」表示にする方法が直ぐに分からなかった >ので、イベントをお聞きした次第です。 う~ん… どこまでがどのように出来ているのかまったくわかりませんので、どのような回答をすればよいのやら… イベントはこんな感じ。 http://www.pu-kumamoto.ac.jp/~matsuno/zemi2/JavaScript/JSEvent.html もう少し詳しくなら http://www.tohoho-web.com/js/onevent.htm (もっと詳しいのもありますが、まずはこのあたりで) >>replaceなどを使って変換してもいいのですが、元データが失われ replaceで変換することと、データが失われる(?)ことには関係がないのでは? (「元データ」の意味するところが不明ですけど…) >21文字以上は切り取ってreplaceをかけるようなやりかたでいいのでしょうか。 replaceというよりも単に20文字分に"…"を付け加えればよいだけでは?  var str = textarea-element.value;  if(str.length>20) str = str.substr(0,20) + "…"; のようなのではだめでしょうか? >>さらには何レコードもデータが存在するので、 2000文字を超えるようなtextareaがいくつも存在するのって、想像するだけで凄い感じ。 もう少しUIを考え直した方が良さそうな気がしますけれど、それだけの数を同時に表示する必然性があるのでしょうか?(←いらぬお世話ですけど…) メニュー的に一部が表示(あるいはデータの識別子が表示)されている画面があって、そこで対象を選択したら、編集画面に移る(あるいは編集エリアに対象の内容が表示される)ようなイメージで、更新はデータ毎に行なうような考え方の方が使う側にもわかりやすそうな気がしますが。(←何もわかってないのに、これまたいらぬお世話ですね) >20文字以上はやはり全体を保持しつつ、~~ 保持する/しないは自由です。短縮表示できれば良いだけというならオリジナルは不要でしょう。 でも、編集するのだと思ってましたけど、しないのかなぁ。 Web上で編集したら、その後はどうするつもりなんだろうか。サーバ側のcgiやスクリプトは出来ているのだろうか?

prr4e
質問者

お礼

何度も何度もありがとうございました。 >←何もわかってないのに、これまたいらぬお世話ですね いえいえ、教えていただいて感謝しております。 >var str = textarea-element.value;  if(str.length>20) str = str.substr(0,20) + "…"; このやり方で見当してみます。 2000文字エリア(表示21文字以降"・・・"表示)を編集し、 その後修正ボタンを押下した際に、 他項目と一緒に修正画面に遷移する方法を取るやり方です。 その際、$_SESSION(PHP)で保持する為、 21文字以降は正規データで遷移させなくてはいけなく、 その時にはDBにアクセスしないと言う仕様なので、 実際に作り込む際は、仰る通りのやり方でやるか、 もう一つtextareaを作って、そのエリアには 正規データが入り(CSS display:none)、 編集の際そのデータを使うと言うやり方の 2点から模索したいと思います。 何度もご丁寧にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >やはりhtmlでは出来ず、javascriptなんですね あれっ! >>クリックして始めて編集可能となります ということから、てっきり、すでにjavascriptを利用しているのかと推測したのですが… それなので、スクリプトを使うことには問題はないだろうと思った次第です。 違ったのでしょうか? >もし、ご存知ならそのイベントを教えて頂けると幸いです。 ご質問文の「クリック」ならonclickなど、#1の「フォーカス」をとるならonfocusなど。 あるいはaddEventListener('click', ~~~ などを用いるとか。 想像では、すでにそのイベントに対して、編集化にするための処理が記述されているのではないかと思いますが、そこに追加すればよいのではないでしょうか?

prr4e
質問者

補足

ご親切にありがとう御座います。 補足が足りずに誠に申し訳ありません。 >すでにjavascriptを利用しているのかと推測したのですが… まだ利用はしていなかったのですが、恐らくjQueryを 利用するものだと認識はしていました。 そのイベントも理解しているつもりではいたのですが、 20文字以上は「・・・」表示にする方法が直ぐに分からなかったので、イベントをお聞きした次第です。 20文字以上はやはり全体を保持しつつ、21文字以上は切り取って replaceをかけるようなやりかたでいいのでしょうか。 なんども申し訳ありませんが、宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

Webページの表示ってことでいいのですよね? >初期画面ではそのtextフィールドは編集不可で、 >クリックして始めて編集可能となります ということなので、想像するにjavascriptを利用しているのではないかと思いますが、 そのままだと、スクリプトオフのユーザは編集不可のままということになりませんか? あるいは、キー操作のみで編集しようとしても(タブキーでフォーカス)編集不可のまま? それは、まぁ、置いておいて、 スクリプトを利用してよいのなら、ソースとしては全データのtextareaを出力しておいて、スクリプトで20文字表示のtextareaを代わりに表示しておくというのではどうでしょうか? クリックされたら、オリジナルのtextareaの表示に戻すとか…

prr4e
質問者

補足

返答が遅くなってすみません。 やはりhtmlでは出来ず、javascriptなんですね。 ありがとう御座います。 jQueryの機能を探してみたいと思います。 もし、ご存知ならそのイベントを教えて頂けると幸いです。 以上、宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • textareaに画像を表示したい

    textareaの入力支援を作成しています。 PHPで画像のディレクトリを開き別窓などに一覧表示させ、 その画像をクリックでjQueryでテキストエリアへタグを挿入。 <textarea id="test"> あああ <img src="hoge.jpg"> いいい </textarea> ↑のようにIMGタグを挿入する状態までは実装させることが出来るのですが、 UI的に、このIMGタグを画像(サムネ)として表示させたいと考えています。 <textarea id="test"> あああ ■(←画像) いいい </textarea> テキストエリアを監視して置換するなど方法はありそうなのですが そもそもテキストエリア内で画像を表示させることができるのでしょうか? 何かいいアイディア、あるいはプラグイン等がありましたら教えてください。

  • textareaで入力できる文字数を制限したい。

    フォームについて質問させてください。 テキストフィールドで、シングルラインならば入力できる文字の最大数を maxlength で指定できるのですが、マルチラインの場合、同様に最大数を指定することはできないでしょうか? わかるかた、なにとぞご教授ください。 ■シングルラインでの文字数制限 <input name="thread_title" type="text" id="thread_title" size="80" maxlength="10"> ■マルチライン <textarea name="text" cols="64" rows="10" id="news_text" maxlength="10"></textarea> ↑上記のようにmaxlength入れても駄目でした。。。涙

    • ベストアンサー
    • HTML
  • textareaを非表示

    お世話になっております。 <input type=hidden> では1行の文章しか入力できないようなのでtextareaを使用しようと思っております。しかしhiddenのようにテキストエリアを表示させないようにしたいのです。そういった事が可能なのかどなたか教えて頂けないでしょうか。

  • テキストエリアの長さ(表示文字数)が違う?

    ジャンルを迷ったのですが... CGIを改造中です。テキストエリアを利用してスクロールする長文を表示させようとしています。 もちろんですが、管理画面(入力画面)もテキストエリアです。 ここでものすごく変な事が起きています。 表示画面では、<TEXTAREA rows="19" cols="23">と表示してあり、全角11文字・半角22文字で折り返しています。 管理画面では、<TEXTAREA cols="19" rows="10" name="com1">と表示してあり、全角11文字・"半角16文字"で折り返しています。 なんでこんな差が出るのでしょうか? ちなみに、ヘッダー部分はサブルーチンを使ってどちらも同じですし、スタイルシートももちろん一緒です。

  • TEXTAREAにデータを渡したい

    お世話になります。 DBにあるデータを検索して、表示させるプログラムを作っています。 基本的には動くようになったのですが、検索したデータを表示させるときにひとつだけ問題が出てきました。 データの入力画面に、1つだけテキストエリアで入力している部分があります。 そこに入力されたデータを表示させようとしたのですが、表示することができません。 最初は同じようにテキストエリアを作成してvalue属性で代入しようと思っていたのですが、<TEXTAREA>タブにはvalue属性がないみたいなのでどうしようか迷っています。 どなたかいい方法を教えてください。

    • ベストアンサー
    • HTML
  • textareaの指定位置へカーソルを移動する

    お世話になっております。 textarea(テキストアリア)をエディターの様に加工しています。 javascriptでtextarea(テキストアリア)内の総行数と行番号を取得して、 textfield(テキストフィールド)に表示しています。 逆に、textfield(テキストフィールド)に行番号を入力してEnterキーを押下した時に 指定した行番号の位置(textarea内)にカーソルを移動したいのですが、 そのようなことは出来ますか? できるとしたら、どのように記述すればよいでしょうか? 参考になるコードまたはページ等ありましたら、教えてください。 宜しくお願い致します。

  • POSTによる改行を含む文字列の受け渡し

    test1.php内のformのテキストエリア(textarea)のデータをPOSTによってtest2.phpへ送りたいのですが、改行がうまく転送できないか、あるいはうまく表示できていないため、外観上改行されているように見えません。 たとえば、test1.phpのテキストエリアで 「 あいうえお かきくけこ 」 と入力して、それをtest2.phpに送って表示させると、 「 あいうえお かきくけこ 」 と表示されます。 どうすれば改行しているように見せることができるのでしょうか?

    • ベストアンサー
    • PHP
  • テキストエリアの表示文字

    result の中身を以下のようにして、テキストエリアで表示させようと思いました。 結果は、表示はされるのですが、データとデータの間に数行の改行が入って表示されてしまいます。 <c:forEach item="${result}"> <textarea><c:out value="${result}"></textarea> </c:forEach> <textarea>、<c:out value="${result}">、</textarea>の位置を変えたりしてみたのですが、結果は同じでした。 同じ方法で、セレクトボックスには改行なく期待通りに表示されたので、テキストエリアでもできると思ったのですが・・・ アドバイスよろしくお願いします。

    • ベストアンサー
    • HTML
  • FROMのTEXTAREAに関する質問

    PHP駆け出しの初心者です。 早速ですが質問です。 『form』タグの『textarea』をPHPから 使用したときにおかしな現象になります。 下記が、現象の出るコーディングを簡単に書いたものです。 ******************************************************<html> <head> <title>PHP_在庫管理_新規入庫処理</title> <body> <?php If (@$_POST){ $MEMO=@$_POST["MEMO"]; } ?> <form name="MEMO_TEST" method="post" action="MEMO_TEST.PHP"> メモ<textarea name="MEMO" cols="60" rows="5" wrap="hard"> <?php echo "$MEMO"; ?> </textarea> <input type="submit" value="更新"></FORM> </body> ************************************************************ 上記のを実行すると、実行した時点で既に『textarea』内に 複数の『tab』データが入力された状態になってます。(;_;) さらに困ったことに、『更新』ボタンを押したときに テキストエリアに入力された内容を 一旦変数『$MEMO』に入れ、そのまま再度テキストエリアへ戻してる のですが、戻すときにさらに複数の『tab』データが付加されて しまいます。 『更新』ボタンを押すたびにどんどん『tab』データが付加されてしまいます。一体何故こうなってしまうのでしょうか? どなたかご教授の程よろしくお願いいたします。(;_;)

    • ベストアンサー
    • PHP
  • textareaのvalueについて

    ▽textareaの受け渡し - PHP - 教えて!goo  http://okwave.jp/qa/q3086989.html >textarea内に表示させる場合は >valueは必要ありません。 ▽[PHP-users 19095]Re: TEXTAREAタグの使い方   http://ml.php.gr.jp/pipermail/php-users/2003-November/019622.html ><TEXTAREA>のValue値は ><TEXTAREA>値</TEXTAREA> >となります。 >なので、開始タグ内でValue値を指定しても表示されません と書かれているのですが、これはHTMLの仕様なのでしょうか? また、それは、どこに書かれているのでしょうか? inputタグはvalueなのに、「textarea」タグでは何故Value値が有効でないか、教えてください。 後、jQueryで「$("textarea").val(data);」とやるのと、 PHPで、<textarea><?php echo $data ?></textarea>とやる行為に、違いはあるでしょうか? 両者は同じことをやっているという認識で良いでしょうか?

    • ベストアンサー
    • PHP