如何处理<div>作为表单<input /> </div>

时间:2013-03-21 02:05:33

标签: php javascript jquery post

我所做的是:

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变量。最初我把它作为一种隐藏的输入法,但是我试图证明它无论我做什么都不会发布,

5 个答案:

答案 0 :(得分:15)

您的代码几乎可以正常运行。 但我宁愿使用普通的<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);
    });
});
php端的

var_dump($_REQUEST)给出了

array(2) {
  ["hiddeninput"]=>
  string(4) "test"
  ["save"]=>
  string(6) "Submit"
}

答案 1 :(得分:5)

尝试绑定提交事件而不是click事件。可能发生的事情是表单在设置textarea的值之前提交。

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

我用method =“get”测试了这个例子,并从div中获取了html以显示在URL中。

答案 2 :(得分:3)

我相信您的表单是在您的js代码有机会运行之前提交的。由于您是从jQuery手动提交的,请尝试阻止按钮的默认事件(也提交表单):

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

答案 3 :(得分:2)

仅根据经验说话,您无法以div形式提交POST值。

您可以将其更改为textarea,如果您想限制用户对其进行编辑,请将其设置为disabled

或者,您可以使用javascript提交表单,并以#hiddeninput方式从中提取值。

答案 4 :(得分: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)使用<input type="hidden">保留任何格式(IE11允许超过FF)。如果你想要从输入/返回的用户中删除所有格式,包括CFLF(即<br>),请改用<textarea style="display:none;"></textarea>。 注2)确保首先成功完成验证,否则您将得到多个具有相同名称的输入。