0

だから私は数日間ググってみましたが、今のところ解決策が見つからないので、これに対する可能な解決策さえあることを期待して皆さんに目を向けています。

PHPに送信する前に、テキストエリアの各行の最後に改行を追加する必要があります。つまり、ユーザーがEnterキーを押さなくても、単語が切り取られたり、テキストエリアので埋められたために行をジャンプしたりした場合でも同様です。そして、jQueryまたはJavascriptを使用してこれを行う必要があります。

誰かがそうする方法について何か良いアイデアを持っていますか?

ありがとう!

更新: Ajaxを使用してjsonでエンコードされた文字列を介してテキストをPHPに送信する必要があることにも注意してください。私はそれについて言及すべきでした!

4

3 に答える 3

1

Textarea要素にはCOLS属性があります。これは、1行あたりの最大文字数を意味します。ブラウザは、(COLS + 1)番目の文字を含む単語をジャンプします。大まかにこのようなことをするJavaScriptを書くことができます。

  • 最後の改行以降の文字を計算するためのカウンターがあります。
  • 文字列を1文字ずつループします。
  • 改行が表示された場合は、カウンターをリセットしてください。
  • 最後の改行(または先頭)から21番目の文字が表示された場合は、単語の先頭(スペースなど)が表示されるまで後方に移動し、改行を追加してカウンターをリセットし、続行します。
  • それ以外の場合、カウンターを増やします

行の折り返しはブラウザロジックの一部であることに注意してください。したがって、ブラウザとまったく同じようにしたい場合は、すべてのブラウザを調査する必要があります(たとえば、単語の区切りと見なされるもの)。

于 2012-06-02T10:42:49.880 に答える
1

これを試して:

http://jsfiddle.net/r7JBe/2/

于 2012-06-02T10:58:10.417 に答える
0

wrapsと呼ばれるほとんど知られていない属性がありますtextarea。ただし、標準には含まれていないため、ブラウザの互換性のマイレージは異なる場合があります。Chromeでhttp://jsfiddle.net/nj3cG/にアクセスし、Chromeの開発ツールで[ネットワーク]タブを見ながらフォームを送信します。フォームで送信される内容に改行が表示されます

ここに画像の説明を入力してください

http://www.abiglime.com/webmaster/reference/html/tags/textarea.htm

<textarea wrap="off|physical|virtual|hard|soft">

説明

wrap属性は、テキストがテキストボックスでどのように折り返されるかを定義するために使用されます。可能な値:

  • offワードラップを禁止します
  • physicalスクリプトを使用してデータを送信するときに、ワードラップを許可し、改行を入れてテキストをそのまま送信します。hard一部のブラウザで呼び出すこともできます
  • virtualshow word wrapsはボックス内にありますが、スクリプトを使用してデータを送信する場合は、データを1つの長いテキスト文字列として送信します。soft一部のブラウザで呼び出すこともできます
于 2012-06-02T11:03:21.533 に答える