微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 从summernote textarea中提取已编辑的文本

我有一个数据库中的预设电子邮件列表. “感谢您成为会员”,“感谢您在途中购买它” – 这样的东西.我正在使用Bootstrap模式来编辑这些电子邮件.当我单击编辑按钮时,模态下拉,并填充数据库中的数据:电子邮件名称,主题,正文.我用 Passing data to a bootstrap modal来完成这个.效果很好.现在我使用summernote作为我的富文本编辑器.

这是我的textarea,显示未经编辑的数据:

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

类summernote是数据如何定向到输出文本区域,以便可以编辑它.编辑完数据后,单击“提交”,然后使用下面的代码将数据提取到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文本区域为空白,这可以正常工作 – 如果我正在创建新电子邮件而不是编辑其中一封.
console.log应该输出已编辑的电子邮件正文,但它不会.它输出原始的电子邮件正文.我不知道为什么.

将编辑好的电子邮件发送到我的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. .note-editable是重定向电子邮件正文的内容.

<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脚本.

解决方法

TomPHP解决方案不适用于较新版本的summernote.
万一有人偶然发现这篇文章是当前的解决方案.
var textareaValue = $('#summernote').summernote('code');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐