form提交wysiwyg内容

form表单中如何提交wysiwyg富文本域内容,大多数情况下,我们都会用到富文本域,而不是单纯的textarea,因为我们可能需要定制一些特殊的文本式样,还有图片,从而图文并茂的展示用户想要展示的内容,就如同markdown一样,你说呢?

富文本编辑器

对于wysiwyg,你可以参考

为Bootstrap定制的微型所见即所得(What you see is what you get)富文本编辑器

Bootstrap富文本编辑器bootstrap-wysiwyg的使用

,不过我觉得你看我的比他们好,哈哈!

材料下载

wysiwyg富文本编辑器

版本如果对应不上的话,富文本编辑器也无法正常的显示。

导入js和css

<link type="text/css" rel="stylesheet" href="${ctx}/components/bootstrap/css/bootstrap-theme.min.css" />
<link type="text/css" rel="stylesheet" href="${ctx}/components/bootstrap/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="${ctx}/components/awesome/css/font-awesome.css" />
<link type="text/css" rel="stylesheet" href="${ctx}/components/wysiwyg/bootstrap-responsive.min.css" />
<link type="text/css" rel="stylesheet" href="${ctx}/components/wysiwyg/wysiwyg.css" />

<script type="text/javascript" src="${ctx}/components/jquery/jquery.js"></script>

<script type="text/javascript" src="${ctx}/components/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="${ctx}/components/wysiwyg/bootstrap-wysiwyg.js"></script>
<script type="text/javascript" src="${ctx}/components/wysiwyg/jquery.hotkeys.js"></script>

注意font-awesome的包路径

使用wysiwyg

<jsp:include page="/components/wysiwyg/wysiwyg.jsp">
<jsp:param value="${description}" name="description"/>
</jsp:include>

在你需要的div中使用这样的语句进行导入,我使用<jsp:include>标签,然后传递了初始化的文本内容。

然后你在我提供的资源中找到wysiwyg.jsp文件,里面我使用了

<%
   String description = request.getParameter("description");
  %>
<input type="hidden" id="description" value="<%=description%>">
$(‘#editor‘).html($("#description").val());

这三串代码进行参数的传递,不知道是否还有更好的解决方案,如果你有,请告诉我

这样,你就可以看到这样的效果:

封装form表单

关键的地方来了,如我前言中所说,对于普通的textarea,我们只要

<textarea class="form-control tb_width420 required" rows="3" placeholder="不超过75个字,简要描述一下你的项目" name="brief" maxlength="75">${deal.brief}</textarea>

这样使用,就可以通过name属性传递到服务端

String name = getPara("name");

也许你想要说,那在点击提交按钮之前来串js代码不就完了。

form.action="/hi/meinv?mynameis="+$("#me").html()

如果你的项目只有这样一个富文本编辑域,那你到这就可以结束了。但如果你有多个文本域,那么我们来把它变成一个组件吧!

于是我们有了(代码参照了dwz的写法)

function iframeCallback(form, callback){
    var $form = $(form), $iframe = $("#callbackframe");

    // 富文本编辑器,这个地方的代码就很重要了,你必须要注意!
    $("div.editor", $form).each(function(){
        var $this = $(this);
        var editor = "<input type=‘hidden‘ name=‘" + $this.attr("name") +"‘ value=‘" + $this.html() +"‘ />";
        $form.append(editor);
    });

    if(!$form.valid()) {return false;}

    if ($iframe.size() == 0) {
        $iframe = $("<iframe id=‘callbackframe‘ name=‘callbackframe‘ src=‘about:blank‘ style=‘display:none‘></iframe>").appendTo("body");
    }
    if(!form.ajax) {
        $form.append(‘<input type="hidden" name="ajax" value="1" />‘);
    }
    form.target = "callbackframe";

    _iframeResponse($iframe[0], callback || YUNM.ajaxDone);
}
function _iframeResponse(iframe, callback){
    var $iframe = $(iframe), $document = $(document);

    $document.trigger("ajaxStart");

    $iframe.bind("load", function(event){
        $iframe.unbind("load");
        $document.trigger("ajaxStop");

        if (iframe.src == "javascript:‘%3Chtml%3E%3C/html%3E‘;" || // For Safari
            iframe.src == "javascript:‘<html></html>‘;") { // For FF, IE
            return;
        }

        var doc = iframe.contentDocument || iframe.document;

        // fixing Opera 9.26,10.00
        if (doc.readyState && doc.readyState != ‘complete‘) return;
        // fixing Opera 9.64
        if (doc.body && doc.body.innerHTML == "false") return;

        var response;

        if (doc.XMLDocument) {
            // response is a xml document Internet Explorer property
            response = doc.XMLDocument;
        } else if (doc.body){
            try{
                response = $iframe.contents().find("body").text();
                response = jQuery.parseJSON(response);
            } catch (e){ // response is html document or plain text
                response = doc.body.innerHTML;
            }
        } else {
            // response is a xml document
            response = doc;
        }

        callback(response);
    });
}

jfinal端

String description = getPara("editor");

获取到对应的文本内容,然后保存到数据库就OK了。

结语:之前文章到这里就结束了,后来发现保存图片的时候一直有问题,就有了这个解决方案,你也一并看了吧!


相关文章

乔布斯语录

那么人生何处不爬虫,爬虫请标http://blog.csdn.net/qing_gee

对自己负责,对父母感恩!

其实乔布斯压根没有说过这句话,哈哈,是青·乔布斯说的!(嘻嘻)

版权声明:这是自封为qing_gee的挨踢工作者,用文字打造的一个高品质的博客栏目。让你拥有一段快乐的阅读时光,不再是奢侈的梦想!

时间: 2024-10-12 19:05:37

form提交wysiwyg内容的相关文章

jQuery的ajax的form提交方法应用

1.如果不用ajax的form提交,就必须把表单的每一条数据进行获取,并提交给action进行处理.这样做比较麻烦,现在用了jQuery的easyui,使用封装好的ajax的form提交.脚本代码如下: //提交表单 function sysusersave(){ if($.formValidator.pageIsValid()){//校验表单输入信息是否合法 //使用jquery的ajax from提交,指定from的id和回调方法,提交的url使用提from中的action,参数为空,传递J

解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

原文:解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象 之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的form,还有其他一些form插件也是一样的,使用不当就会遇到这个问题. 前台: <!DOCTYPE html> <html> <head> <meta http-equiv=

使用HttpURLConnection请求multipart/form-data类型的form提交

写一个小程序,模拟Http POST请求来从网站中获取数据.使用Jsoup(http://jsoup.org/)来解析HTML. Jsoup封装了HttpConnection的功能,可以向服务器提交请求.但分析了目标网站(http://rapdb.dna.affrc.go.jp/tools/converter/run)的数据提交方式后,决定自己用代码来模拟Content-type为 multipart/form-data的form表单提交. 1.HttpURLConnection :A URLC

jquery.validate+jquery.form提交的三种方式

原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种方式 概述:本篇主要讨论jquery.validate结合jquery.form实现对表单的验证和提交方案. 方式一:是通过jquery.validate的submitHandler选项,即当表单通过验证时运行回调函数.在这个回调函数中通过jquery.form来提交表单: 方式二:是通过jquer

框架----Django之Form提交验证(二)

一.Form提交验证之(学生表.老师表.班级表)的添加和编辑实现案例 1. 浏览器访问 http://127.0.0.1:8000/student_list/ http://127.0.0.1:8000/teacher_list/ http://127.0.0.1:8000/class_list/ 2. models 1 from django.db import models 2 3 class Classes(models.Model): 4 title = models.CharField

2016 系统设计第一期 (档案一)jQuery ajax serialize()方法form提交数据

jQuery ajax serialize()方法form提交数据,有个很奇怪的问题,好像不能取到隐藏控件的值. //点击提交按钮保存数据 $('#btn_submitUser').click(function () { var UserId = $('#UserId').val(); if (UserId == "") { $.ajax({ type: "POST", url: '/Users/Create/', data: $("#SaveUserFo

asp.net MVC中form提交和控制器接受form提交过来的数据

MVC中form提交和在控制器中怎样接受 1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的Request请求取值[HttpPost]public ActionResult AddNews(){    string a=Request["text1"];    string b=Request["text2"];}方法2:Action参数名与表单元素name值一一对应[HttpPost]public ActionResult Add

Atitit &#160;&#160;发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化

Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化 大段内容务必要替换转义换行符号1 提交务必使用utf编码,否则解码后的可能缺失,是web server的bug应该.Resin4.0.221 大段内容务必要替换转义换行符号 C:\0workspace\AtiPlatf_cms\WebRoot\poster\gejy_pub.js cmd= cmd.replace(new RegExp("\r\n",'gm'),"\\r\\n

asp.net MVC中控制器获取表单form提交的数据之实体类数据

第一次写记录文章,难免有不足之处:欢迎指出. 1.新建一个mvc项目如: 2.新建一个Test.cs 注意get,set方法不能简写 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; usi