【问题标题】:Submitting textarea content from outside a form从表单外部提交 textarea 内容
【发布时间】:2018-12-26 07:42:36
【问题描述】:

我正在尝试在提交表单后保存 TinyMCE 文本区域中的内容。

我的页面正文有文本区域,当我点击保存时,会弹出一个模式,其中包含要提交的小形式的额外数据。但是,当我提交时,它说 index'fulltext' 未定义。我已将此分配给名称为 fullText 的帖子,该名称已分配给我的 textarea,但问题是我实际上并没有发布该表单。

我的文本区域在页面上较高:

<form id="form-data3" method="post">
    <textarea name="fullText" id="mytextarea3"></textarea>
        <input type="submit" value="Save Page" style="float:right;" data-toggle="modal" data-target="#savePageModal">
</form>

所以我填写了它,然后我点击了一个保存按钮,该按钮会提示我的模态表单,该表单在提交之前要求输入一些值。填写完成后,我点击了提交,它触发了 addPage.php 但我的调试给了我来自第一行的'fullText' 的未定义索引:

$content = $_POST['fullText'];
$addContent = "
INSERT INTO content(content)
VALUES('$content');
";

显然问题是我的文本区域与一个帖子的表单不同,但即使我从我的文本区域中删除表单标签,我怎样才能传递文本区域的 tinyMCE 内容,以便在我提交表单时在模态中,它也提交此文本内容

更新:

第二种形式:

<form action="addPage.php" method="post">
<input type="hidden" value="/from previous textarea">
</form>

【问题讨论】:

  • “很明显,问题是我的文本区域与一个帖子处于不同的表单中” - 您的表单没有“操作”。
  • “但我的调试给了我 $fullText 的未定义变量” - 我没有看到该变量的赋值。
  • 在我的模态中实际提交的表单确实具有操作="addPage.php",但是当我提交该表单时,我希望能够包含来自 textarea 的内容。几乎就像一个隐藏的输入,但我不知道在这种情况下我会怎么做
  • 抱歉,我刚刚意识到,它给了我未定义的“fullText”索引
  • 您发布的代码表明您可能在某处使用 JS;我对吗?我会尝试使用if(!empty($var)){...},然后再试一次。

标签: php html


【解决方案1】:

这与我的想法一致。

HTML

<p><a href="#my_modal" data-toggle="modal">Open</a></p>

<div class="modal" id="my_modal">
      <div class="modal-body">
        <textarea class="second"></textarea>
      </div>
</div>

<p><textarea class="first">First Textarea</textarea></p>

JQUERY

$('#my_modal').on('show.bs.modal', function() {
    var first = $(".first").val();
    $(".second").val(first);
});

在jsfiddle上查看此内容

【讨论】:

  • 谢谢你,在使用了那个小提琴之后,这更有意义了。
  • 我想我可以隐藏第二个 textarea,因为我不希望它实际以模态形式显示?
  • 没问题,显然您需要隐藏输入,但我使用第二个文本区域进行视觉表示。
  • 是的,将其换成隐藏输入。
  • jsfiddle.net/923xkvLe/9 这看起来像我正确设置了值吗? (对不起,我对 JS 和 AJAX 很糟糕)
【解决方案2】:
  1. 制作按钮类型按钮,或者您可以阻止默认操作
  2. 按钮点击事件加载模型
  3. 加载模型的按钮点击事件使用jquery ajax提交表单

    jQuery.ajax({
       url: "submit.php",
       data: $('#myForm').serialize() + "&textfield=" + textfieldvalue,
       type: "POST",
       success: function(data){
       // do what ever you want
       },
    });
    

【讨论】:

  • 所以,要理解:这使得第一个按钮将文本区域传递给第二个表单模式?那么如何让它填充隐藏的输入呢?
  • 根据您的解释,输入是隐藏的,没有必要填充它。相反,只需获取数据并附加到 ajax 中的表单数据。如果您也有更多表单元素,这将是更可行的解决方案。
【解决方案3】:

你可以使用ajax, 并获取您的 textarea 的内容是

var content =  tinyMCE.getContent('mytextarea3');

现在您可以发布到任何您想要的地方。

【讨论】:

  • 那么我就把那个变量放在隐藏输入中?
  • 当用户点击保存/提交按钮时,您需要使用 javascript ajax 方法,下面是带有示例的 url。 stackoverflow.com/questions/9436534/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
相关资源
最近更新 更多