从contentEditable div发布内容

时间:2014-11-27 22:31:43

标签: jquery contenteditable

我正在尝试制作一个非常简单的WYSIWYG文本编辑器。我允许的只是文字和图片。这些图像使用FileReader通过jquery附加到div中,并附加一个img元素,其源代码为该图像的base64。

我试图将其发布到数据库中。我应该怎么做到这一点?

我正在使用Laravel 4,并且表单已经发布完全正常(使用ajax)但仅在使用textarea输入时。当然,这不能包含任何图像,所以我已经切换了内容可编辑div。

标记如下:

  {{ Form::open(array('url' => 'createpostaction', 'class' => 'newupdateform')) }}
    <div contentEditable="true" id="newupdate-text" class="form-control-addupdate">
      Add text and images...
    </div>
    {{ Form::submit('Post Update', array('class' => 'btn btn-primary submit-newupdate-btn')) }}
  {{ Form::close() }}

这是textarea:

  {{ Form::textarea('newupdate-text', Input::old('newupdate-text'), array(
      'class' => 'form-control-addupdate',
      'placeholder' => 'Add update here'
      ))
  }}

如果我没有使用图像,那么我只需使用jQuery将文本放入文本区域,但我希望发布的数据包含文本和img标记。

然后我将在PHP中处理base64图像等。

这是可能的,或者我应该考虑另一种解决方案。

1 个答案:

答案 0 :(得分:0)

可编辑的div不是主表单字段,因此不会出现在数组$ _POST上。尝试使用一些jQuery来获取div内容,例如$('#newupdate-text')。text();

$('.newupdateform').on('submit', function(e){
   e.preventDefault();
   $.ajax({
       url: $(this).attr('action'),
       data: { 
           formContent: $(this).serialize(),
           divContent: $('#newupdate-text').text()
       }   
   })
});