2016-05-18 8 views
0

contenteditableというdivを使用して、ユーザーがその中のテキストを編集できるようにしました。divの内容がデータベースに挿入されていません

フォームが送信されるときに、Javascriptを使用して非表示の入力フィールドの値をdivのコンテンツとして設定し、それをデータベースに挿入します。

私の問題は、divのコンテンツがデータベースに入力されていないことです。

<?php 
if(isset($_POST['submit'])) { 
echo' 
<script> 
    document.getElementById("hiddenTextarea").value = 
    document.getElementById("post").innerHTML; 
    return true; 
</script> 
'; 

$post = $_POST['hiddenTextarea']; 
$stmt = $con->prepare("INSERT INTO posts (post) VALUES (:post)"); 
$stmt->bindParam(':post', $post); 
$stmt->execute(); 
} 
?> 

<form method="post"> 
<div id="post" contenteditable></div> 
<input type="hidden" id="hiddenTextarea" name="hiddenTextarea"> 
<input type="submit" name="submit"> 
</form> 

は、問題はおそらくクエリはJavascriptコードの前に実行されていることを#hiddenTextareaの値を変更しましたか?次のコードから

答えて

0

は、私には、JavaScriptのonkeyupイベントを使用して解決策を考え出すことができましたタイプはcontenteditable divで、自動的に非表示の入力フィールドに入力され、変数を使用して定義してデータベースに入力することができます。

0

用途:

<?php 
if(isset($_POST['submit'])) { 
$post = $_POST['hiddenTextarea']; 
$stmt = $con->prepare("INSERT INTO posts (post) VALUES (:post)"); 
$stmt->bindParam(':post', $post); 
$stmt->execute(); 
} 
?> 

<form method="post"> 
<div id="post" contenteditable></div> 
<input type="text" name="hiddenTextarea" id="hiddenTextarea"> 
<input type="submit" name="submit"> 
</form> 

<script> 
var contentText = document.getElementById('post'); 
var hiddenInput = document.getElementById('hiddenTextarea'); 
contentText.onkeyup = function() { 
    hiddenInput.value = this.innerHTML; 
}; 
</script> 

ユーザーを:別のフォーラムや、様々なユーザからの様々な提案をした後

<?php 
if(isset($_POST['submit'])) { 
    $post = $_POST['post']; 
    $stmt = $con->prepare("INSERT INTO posts (post) VALUES (:post)"); 
    $stmt->bindParam(':post', $post); 
    $stmt->execute(); 
} 
?> 

<form method="post"> 
    <textarea name="post"></textarea> 
    <input type="hidden" id="hiddenTextarea" name="hiddenTextarea"> 
    <input type="submit" name="submit" onsubmit="return copyContent()"> 
</form> 
+0

運がいい...まだ同じ問題です。また、要素に 'name'が必要な理由を説明してください。 –

+0

jsコードでは、hiddenTextareaへの投稿のデータを置くだけで、この場合はdivコンテンツの代わりにtextareaタグから編集して使用することができます。投稿に直接アクセスします –

+0

私はそれについて考えました'textarea'ではできないdiv太字や斜体(JQueryを使って)内の選択されたテキストをユーザーが作成できるようにする計画です。 –

関連する問題