当前位置: 首页 > 知识库问答 >
问题:

从Summernote文本区提取编辑过的文本

裴弘
2023-03-14

我有一个数据库里的罐头电子邮件列表。“感谢您成为会员”,“感谢您在途中购买”—诸如此类的话。我正在使用引导模式来编辑这些电子邮件。当我单击编辑按钮时,模式会下拉,并用数据库中的数据填充:电子邮件名称、主题、正文。我正在使用将数据传递给引导模式来实现这一点。效果很好。现在我使用summernote作为我的富文本编辑器

以下是我的文本区域,显示未编辑的数据:

<textarea class="summernote input-block-level" id="content" name="content" rows="18"></textarea>

summernote类是如何将数据定向到输出文本区域以便对其进行编辑的。编辑完数据后,我单击submit,数据将被拉到JavaScript中,代码如下。

    $(document).ready(function()
        {
          $('button[id=editEmail]').on('click', function()
          {

var $email_edbody_array = $('textarea[name="content"]').html($('#summernote').code());
var $email_edbody = $email_edbody_array.html();
console.log("edited email" + $email_edbody);

有趣的是,如果summernote文本区域是空白的,这就很好了——就像我正在创建一封新电子邮件而不是编辑一封一样。控制台。日志应输出已编辑的电子邮件正文,但它不输出。它输出原始电子邮件正文。我不知道为什么。

我错过了什么,以获得编辑的电子邮件到我的JavaScript。下面是我认为对这个问题很重要的代码的主要部分。

此部分是页面的输出,以及编辑按钮的数据重定向。

          <?php while ($datarow_emails = pg_fetch_assoc($results_emails))
          {
           echo " 
            <tr>
                <td>".$datarow_emails['internal_name']."</td> 
                <td>".$datarow_emails['email_subject']."</td>
                <td>".$datarow_emails['type']."</td>
                <td>
                        <span class='btn btn-info btn-small open-editEmailModal' data-toggle='modal' 
                            href='#editEmail' data-inm='".$datarow_emails['internal_name']."'
                            data-es='".$datarow_emails['email_subject']."'
                            data-bdy='".$datarow_emails['email_body']."'
                            data-ty=".$datarow_emails['type']."
                            data-ces=".$datarow_emails['canned_email_sid'].">
                        <i class='icon-edit icon-white'></i> Edit</span>

                        <span class='btn btn-danger btn-small open-delEmailModal' data-toggle='modal'href='#deleteWarning' data-ces=".$datarow_emails['canned_email_sid'].">
                        <i class='icon-remove icon-white'></i> Delete</span>
                </td>
            </tr>";
          } 
          ?>

下一部分是将数据重定向到模式的jQuery。。注意可编辑的是重定向电子邮件正文的功能。

<script>
$(document).on("click", ".open-editEmailModal", function()
{
  var internalName = $(this).data('inm');
  var emailSubject = $(this).data('es');
  var emailBody = $(this).data('bdy');
  var type = $(this).data('ty');
  var cannedEmSid = $(this).data('ces');

  $(".modal-body #canEmSid").val(cannedEmSid);
  $(".modal-body #interName").val(internalName);
  $(".modal-body #emailSub").val(emailSubject);
  $(".modal-body #emailBdy").val(emailBody);
  $(".modal-body .note-editable").html(emailBody);
  $(".modal-body #tYpe").val(type);
});
</script>

以下是模态:

        <div id="editEmail" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="emailActivityLabel" aria-hidden="true">
          <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h3 id="myModalLabel">Edit Canned Response</h3>
            </div>
            <div class="modal-body">
        <form class="form-horizontal">
                    <div class="control-group" style="margin-bottom:8px;">
                        <label class="control-label" for="inputInternalName">Internal Name</label>
                        <div class="controls">
                        <input type="text" id="interName" name="interName" placeholder="Internal Name" />
                        <input type="hidden" id="canEmSid" name="canEmSid"/>
                      </div>
                    </div>
                    <div class="control-group" style="margin-bottom:8px;">
                        <label class="control-label" for="inputInternalName">Type</label>
                        <div class="controls">
                  <select id="tYpe" name="tYpe">
                    <?php

                    while ($datearow_typeDD2 = pg_fetch_assoc($results_typesDD2))
                    {
                    echo "<option value='".$datearow_typeDD2['buyer_seller_sid']."'>".$datearow_typeDD2['buyer_seller_type']."</option>\n";
                    }
                    ?>
                  </select>
                        </div>
                    </div>
                    <div class="control-group" style="margin-bottom:8px;">
                        <label class="control-label" for="inputSubject">Email Subject</label>
                        <div class="controls">
                        <input type="text" id="emailSub" name="emailSub" placeholder="Email Subject">
                        </div>
                    </div>
              </form>
                        <!-- <div class="text-editor"></div> -->
                    <!-- <div  class="summernote"></div> -->
                <div id="emailEditor">
                    <div class="controls">
                    <textarea class="summernote input-block-level" id="content" name="content" rows="18"></textarea>

                    </div>
                </div>
            </div>

            <div class="modal-footer">
                <button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
                <button class="btn btn-success" id="editEmail">Save</button>
            </div>
        </div>

<script type="text/javascript">

$(document).ready(function() 
{
  $('.summernote').summernote({  
    });

          $('button[id=editEmail]').on('click', function()
          {

var $email_edbody_array = $('textarea[name="content"]').html($('#summernote').code());
var $email_edbody = $email_edbody_array.html();

下面是其他变量和AJAX脚本。

共有3个答案

呼延渝
2023-03-14
  • 在版本0.7之前。0:
$('#summernote').code()
  • 版本0.7。0及以上:
$('#summernote').summernote('code')
壤驷安和
2023-03-14

您可以使用summernotecode()函数,而不是获取字段的值。

var textareaValue = $("#summernote").code();

对于您的代码:

var textareaValue = $("#content").code();
魏宸
2023-03-14

TomPHP解决方案不适用于较新版本的summernote。如果有人偶然发现这篇文章,这里有一个最新的解决方案。

var textareaValue = $('#summernote').summernote('code');
 类似资料:
  • 我想在用户在EditText中键入文本时将文本放入我的应用程序中的某个字符串中,并使用它来生动地在活动上显示它(在不同的视图中...) - 就像谷歌的实时/即时搜索工作一样...

  • 我需要从大文件中提取文本(最大限制50MB)文件可能是doc、ppt、xls、txt或pdf格式。到目前为止,我使用了ApachePOI'http://poi.apache.org/' 用于Microsoft Office文档和PDFBox从PDF中提取文本。然而,随着文件变大,提取过程变得缓慢,特别是以下文件。到目前为止我取得的成果: 1. PPTX-45MB-3分钟apx 2.PDF-62MB

  • 如何继续删除char从编辑文本后settext编辑文本当按钮删除keybord是坚持真? 谢啦

  • 问题内容: 我将div设置为,并设置了“ ” 样式,以便保留换行符。在Safari,FF和IE中,div的外观和工作原理几乎相同。一切都很好。我想做的是从该div中提取文本,但要确保其格式不会丢失- 特别是换行符。 我们使用的是jQuery,它的功能基本上是执行预定的DFS,并将DOM分支中的所有内容粘合在一起。这会丢失格式。 我看过该函数,但似乎所有这三种浏览器都使用div 幕后生成的实际HTM

  • 问题内容: 我正在开发一个程序,该程序可以下载HTML页面,然后选择一些信息并将其写入另一个文件。 我想提取段落标签之间的信息,但是我只能获得段落的一行。我的代码如下: 我试图添加另一个while循环,这样可以告诉程序继续写入文件,直到该行包含该标记为止; 问题答案: so 我真正喜欢使用的另一个html解析器是jsoup。您可以 在2行代码中获得所有元素。 然后再将其写到文件中 或者,如果您希望

  • 问题内容: AJAX调用返回的响应文本包括JSON字符串。我需要: 提取JSON字符串 修改它 然后重新插入以更新原始字符串 我不太担心步骤2和3,但是我不知道如何执行步骤1。我当时在考虑使用正则表达式,但是我不知道该怎么做,因为我的JSON可能具有嵌套对象的多个级别或数组。 问题答案: 您不能使用正则表达式从任意文本中提取JSON。由于正则表达式通常不够强大,无法验证JSON(除非可以使用PCR