我所做的是:
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变量。最初我把它作为一种隐藏的输入法,但是我试图证明它无论我做什么都不会发布,
答案 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)确保首先成功完成验证,否则您将得到多个具有相同名称的输入。