7

私がやったことは次のとおりです。

HTML

<form>
    <div id="textBox" contenteditable="true" name="textBox"><?php echo $storyText; ?>
    </div>
    <textarea id="hiddeninput" name="hiddeninput"></textarea>
    <input type="submit" id="save" name="save" value="Submit"/>
</form>

Javascript

$('#save').click(function () {
    var mysave = $('#textBox').html();
    $('#hiddeninput').val(mysave);
    $("form:first").submit();
    $('#hiddeninput').append(mysave);
    alert($('#hiddeninput').val());
});

したがって、アラートと追加の両方で正しい情報が表示されますが、送信時に #hiddeninput が php 変数として保存されません。もともとこれは隠しインプットメソッドとして持っていたのですが、何をしても投稿されないことを示そうとしているのですが、

4

5 に答える 5

19

あなたのコードはほぼそのまま動作しています。しかし、私はむしろ通常を使用したいと思います。あなたのケースではフォーム<input type="hidden">をトリガーする必要はありません。値を隠しフィールドに入れるだけです。submit

与えられたマークアップにわずかな変更を加えて

<form action="showrequest.php">
<div id="textBox" contenteditable="true" name="textBox" style="width:300px;height:100px;">
</div>
<textarea id="hiddeninput" name="hiddeninput"></textarea>
<input type="submit" id="save" name="save" value="Submit"/>
</form>

js

$(function(){
    $('#save').click(function () {
        var mysave = $('#textBox').html();
        $('#hiddeninput').val(mysave);
    });
});

var_dump($_REQUEST)PHP側で与える

array(2) {
  ["hiddeninput"]=>
  string(4) "test"
  ["save"]=>
  string(6) "Submit"
}
于 2013-03-21T02:42:31.603 に答える
6

クリックイベントの代わりに送信イベントをバインドしてみてください。テキストエリアの値が設定される前にフォームが送信されている可能性があります。

$('form').submit(function(){
    var mysave = $('#textBox').html();
    $('#hiddeninput').val(mysave);
});

この例をmethod="get"でテストし、divからhtmlを取得してURLに表示しました。

于 2013-03-21T02:20:38.110 に答える
3

jsコードが実行される前に、フォームが送信されていると思います。jQueryから手動で送信しているので、ボタンのデフォルトイベント(フォームも送信します)を防止してみてください。

$('#save').click(function(e) {
    e.preventDefault();
    var mysave = $('#textBox').html();
    $('#hiddeninput').val(mysave);
    $("form:first").submit();
});
于 2013-03-21T02:14:22.483 に答える
2

経験から言えばdiv、フォームで値を送信することはできませんPOST

テキストエリアに変更できます。ユーザーによる編集を制限する場合は、に設定しdisabledます。

または、javascript を使用してフォームを送信し、#hiddeninputその方法で値を取得することもできます。

于 2013-03-21T02:10:39.510 に答える
0

必要な div コンテンツ要素を送信する一般的な方法を次に示します (以下の注を参照)。

<form method="post" id="f">
<div id="txt" addToForm="f" contenteditable spellcheck="true" style="height:100px;width:300px;font-family:arial,sans serif;border:1px solid black;font-weight:normal;overflow-y:auto;"
></div><br />
<input type="button" value="Go" id="btnGo">
</form>
<script type="text/javascript">
$(document).ready(function(){
    $("#btnGo").click(function(){
        $("div[addToForm]").each(function(){
            var tId=$(this).prop("id");
            $(this).after("<input type='hidden' name='"+tId+"' id='hdn"+tId+"'>");
            $("#hdn"+tId).val($(this).html());
        });
        ("#f").submit();
    });
});
</script>

注 1) using<input type="hidden">はすべてのフォーマットを保持します (IE11 では FF 以上が許可されます)。<br>Enter/Return を押すユーザーからCFLF (つまり 's) を含むすべての書式設定を削除したい場合は、<textarea style="display:none;"></textarea>代わりに を使用します。注2)最初に検証が正常に完了していることを確認してください。そうしないと、同じ名前の複数の入力が得られます。

于 2015-05-27T14:49:50.277 に答える