1

Google Chrome ブラウザーの Textarea に Single New Line and New Paragraph という機能を実装しています (IE では、Shift+Enter (\r\n) と Enter (\n) が異なると見なされるため、IE では問題なく動作します)。 . 概念は、Shift+Enter を押すと、カーソルの後の行 (テキスト) は次の (新しい) 行 (\r\n) に移動する必要がありますが、同じ段落と見なす必要があります。Enter キーのみを押すと、カーソルの後の行 (テキスト) も次の (新しい) 行 (\n) に移動する必要がありますが、今回は新しい段落と見なす必要があります。

今私の問題は次のとおりです。デフォルトでは、Textarea は jQuery API ドキュメント ( http://api.jquery.com/val/ )に従って \r\n を考慮しません。\n Shift+Enter を押すか、Enter のみを押すかのみを考慮します。フック(jQueryサイトで指定)を実装したことを解決するには、

$.valHooks.textarea = {
  get: function( elem ) {
    return elem.value.replace( /\r?\n/g, "\r\n" );
  }
};

しかし、その後、テキストエリアでどのキーを押しても \r\n が配置されます。Shift+Enter (\r\n) と Enter (\n) のみを区別したい。しかし、上記のフックが配置されている場合は、シャツ+エンターを押すか、エンターのみを押すかに関係なく、毎回 \r\n が追加されます。

サーバー側では、単一の改行 (\r\n) または新しい段落 (\n) を考慮する方法を特定するのは困難です。どちらの場合も \r\n の組み合わせが Chrome ブラウザから送信されているためです。

Shift+Enter と押された Enter キーのみに基づいて、サーバー側でそれらを区別します。ただし、上記で説明したように、\r\n が Chrome からサーバーに送信されるたびに.

上記の質問全体は、Google Chrome のみを対象としています (IE のすべてのバージョンで適切に動作しています)。

上記の質問の説明でまだ何か不足している場合は、教えてください。

さらなる支援を待っています:)

4

1 に答える 1

1

私はそれを自分で解決しました。Chrome は、または\r\nを押しても常に返されるためです。私は自分の要件に基づいてトリックを行いました。ENTERSHIFT+ENTER

ユーザーが押したときに特別なUnicode文字を配置する必要があり、SHIFT+ENTERこれを実現するために以下のコードを使用しました:

jQuery(txtInputControl).val(contentOfInputControl.substring(0,caretPositionOfCursor) +  String.fromCharCode(172) + contentOfInputControl.substring(caretPositionOfCursor,contentOfInputControl.length));

ユーザーが押したコンテンツの途中に Unicode 特殊文字を配置することを意味しますSHIFT+ENTER。また、サーバー側でも処理します。両側から追跡できるように。

于 2013-09-11T10:48:20.013 に答える