无法将文本区域值传递给我的表单

Posted

技术标签:

【中文标题】无法将文本区域值传递给我的表单【英文标题】:Can't pass a text area value to my form 【发布时间】:2014-04-26 13:16:23 【问题描述】:

我目前正在我的网站上重新设计一个页面,允许注册用户向管理员发送消息。我正在使用的所有代码在其他页面上已经完全正常运行,但是在移动所有内容之后,它已经停止工作,这让我感到困惑。

<textarea name="content" id="msgs" class="convo" ></textarea>

文本区域非常简单,表单包裹在 TR 标签周围。 我知道该表格有效,因为我还向表格提交了发送者和接收者的日期/时间和电子邮件地址。表单执行“compose.php”,成功写入数据库并重定向回客户的个人资料。问题是“新”消息是空白的。除了文本区域的内容外,所有内容都发送到表单。

如果我使用纯文本区域,那么一切正常,所以问题必须是我应用于文本区域的“所见即所得内容编辑器”,即使它在其他页面上工作正常?

bkLib.onDomLoaded
(
  function()
   
    new nicEditor(buttonList : ['bold','italic','underline','left','center','right','ol','ul','fontFamily','fontSize','fore    color','link','unlink']).panelInstance('msgs');
  
);

有人知道我可以从哪里开始吗?我已经解决这个问题好几个小时了,它开始让我变得最好了!如果您需要任何其他 sn-ps 代码,请告诉我。

编辑

也许这会有所帮助...

<textarea name="content" id="msgs" class="convo" >TEST MESSAGE</textarea>

当页面加载时,“TEST MESSAGE”被写入文本区域。如果我提交它,值会传递给表单,然后传递给数据库等...但是如果我删除它并输入我自己的话,什么都不会发送?

【问题讨论】:

(感谢@Wireblue!)您遇到的错误是什么?我不确定问题出在内容编辑器上。 您的 PHP 是否包含任何与$content=$_POST['content']; 类似的内容?这是通常的 PHP 表单命名约定。 @CraigyCraigo 我注意到'fore color' 中间有空格。你试过删除它吗? 新页面是否使用 SSL 证书?在将站点转换为使用 SSL 时,我遇到了类似的问题。随机的东西停止工作。我很确定你会从 http://https:// 失去 $_POST 说实话,如果消息是发给管理员的;为什么你允许以任何方式格式化?我可以在论坛、博客或某种留言板上看到它是一个不错的功能,但是当我编写类似的脚本时,我倾向于尽可能地限制这种东西,因为害怕 XSS。而且...谁在乎我的管理员是否能看到漂亮的东西。 ckeditor.com 看起来维护得很好,并且在 github 上开源。你可能会和他们走得更远。 【参考方案1】:

我已经解决了这个问题!

旧代码是:

<form name="send" id="sndmsg" method="post" action="compose.php">
<tr>
  <td  class="tab">&nbsp;Compose New Message</td>
</tr>
<tr>
  <td>
    <textarea name="content" id="msgs" class="convo" ></textarea>
  </td>
</tr>
<tr>
  <td>
    <input name="user_s" type="hidden" id="user_s" value="<?PHP echo $user;?>" />
    <input name="user_r" type="hidden" id="user_r" value="<?PHP echo $email;?>" />
    <input name="fname" type="hidden" value="<?PHP echo $fullname;?>" />
    <input type="image" src="/send.png" />
  </td>
</tr>
</form>

这显然是行不通的。新代码确实有效,如下所示:

<tr>
  <td  class="tab">&nbsp;Compose New Message</td>
    <form name="send" id="sndmsg" method="post" action="compose.php">
    <textarea name="content" id="msgs" class="convo" ></textarea>
    <input name="user_s" type="hidden" id="user_s" value="<?PHP echo $user;?>" />
    <input name="user_r" type="hidden" id="user_r" value="<?PHP echo $email;?>" />
    <input name="fname" type="hidden" value="<?PHP echo $fullname;?>" />
    <input type="image" src="/send.png" />
    </form>
  </td>
</tr>

【讨论】:

奇怪的行为。您是否碰巧在与默认浏览器不同的浏览器上尝试了“旧代码”? @Nazca Nope,两个实例都使用 Google Chrome。 我很高兴你能成功。但我仍然对为什么它不起作用感到困惑。我从http://nicedit.com/download.php(未压缩版本)下载了nicedit,而old code似乎使用Chrome版本32.0.1700.76 m按预期工作

以上是关于无法将文本区域值传递给我的表单的主要内容,如果未能解决你的问题,请参考以下文章

文本区域值更改时双击 ipad 设备

我无法将我的 v-model 数据传递到我的后端以获取 vue.js 中的单选按钮类型,如何将选中的单选按钮值传递给我的后端?

将文本区域保存到本地服务器上的 HTML 文件

无法使用 asp.net Web 服务将 ajax 标头值传递给我的 Web 服务方法

自动清除和重新填充文本区域值

文本区域值计数长度jquery