🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1401閲覧

contenteditable属性のテキストエリアで装飾した文字をinnerHTMLしてformで渡したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/12/01 10:10

>>実現したいこと

同じ件で2回目の質問、失礼します。

前回に続き、作っているものは一緒で「Gmailのようなテキストエディタ」なのですが、
formでphpファイルにvalueで値を送信するとinnerHTMLが効いていない状態になってしまいます。

innerHTMLを記述する場所などかいけないのでしょうか? JSの知識が浅いため、”そもそも..."な部分を誤っている可能性もあると思っています。
※作成中のエディタは、HTMLの記述に変換した後に 自作タグに変換する必要があるため、innerHTMLの後にいくつかreplaceを記述しています。

>>望んでる結果

エディタエリアに[太字]ボタンで太くした文字「AAA」を、formで送信した結果が「=1=strong_font=2=AAA=3=」となるようにしたい。

>>現状

エディタエリアに[太字]ボタンで太くした文字「AAA」を、formで送信した結果が、太文字になった状態の「AAA」になってしまう。

該当のソースコード

Javascript

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>Gmailみたいなエディタ</title> 6 <script> 7 //innerText をサポートしない Web ブラウザと共通で使用するための 8 //setText 関数を定義 9 function setAlter_innerText(element) { 10 if (element.innerText) { 11 element.setText = function (text) { 12 element.innerText = text; } 13 } else { 14 element.setText = function (text) { 15 element.textContent = text; } 16 } 17 return element; 18 } 19 20 //getElementById の短縮 21 var $id = function (id) { 22 return document.getElementById(id); 23 }; 24 25 //コンテンツのロードが完了したら 26 document.addEventListener('DOMContentLoaded', function () { 27 var editArea = $id('editArea'); 28 29 //innerText を設定するためのメソッドを追加 30 setAlter_innerText(editArea); 31 32 //[黒文字] ボタン 33 $id('fontColorBlack') 34 .addEventListener('click', function () { 35 document.execCommand('ForeColor', false, 'black'); 36 }); 37 //[赤文字] ボタン 38 $id('fontColorRed') 39 .addEventListener('click', function () { 40 document.execCommand('ForeColor', false, 'red'); 41 }); 42 //[太字] ボタン 43 $id('boldButton') 44 .addEventListener('click', function () { 45 document.execCommand('bold', false); 46 }); 47 48 // editAreaの文字をinnnerHTMLしてhiddenのvalueの値としてセット 49 var textBody = $id('textBody'); 50 var form = $id('form'); 51 52 // フォームsubmitイベント時にエディタエリアの値を反映 53 form.onsubmit = function() { 54 textBody.value = editArea.innerHTML 55 .replace(/&lt;b&gt;/g, '*=*1strong_font*=2=*') 56 .replace(/&lt;/b&gt;/g, '*=3=*') 57 .replace(/&lt;font color="#ff0000"&gt;/g, '*=1=*red_font*=2=*') 58 .replace(/&lt;/font&gt;/g, '*=3=*') ; 59 return textBody.value ? true : false; 60 } 61 } 62 ); 63 64 </script> 65</head> 66<body> 67 <button id="fontColorBlack">黒文字</button> 68 <button id="fontColorRed">赤文字</button> 69 <button id="boldButton">太字</button> 70 71 <div id="editArea" contenteditable="true"><!--エディタエリア--></div> 72 73 74 <form name="test2" action="test_action.php" method="post" enctype="multipart/form-data" id="form"> 75 <input type="hidden" name="text_body" id="textBody" value=""> 76 <input type="submit" value="送信"> 77 </form> 78</body> 79</html>

PHP

1<?php //test_action.php 2 3$body = ''; 4if(isset ($_POST['text_body']) === TRUE){ 5 $body = $_POST['text_body']; 6} 7 8?> 9<html> 10 <body> 11 <p>valueに入った文字列:<?php print $body; ?></p> 12 </body> 13</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

その「エディタ」部分に書かれる文字列はHTMLエンティティになってませんよ。
イメージ説明

投稿2019/12/01 21:18

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問