form提交wysiwyg内容

news/2024/7/8 3:17:55 标签: javascript, 数据库, 爬虫
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/48679851

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">javascript"></script>

<script type="text/javascript" src="${ctx}/components/bootstrap/js/bootstrap.min.js">javascript"></script>
<script type="text/javascript" src="${ctx}/components/wysiwyg/bootstrap-wysiwyg.js">javascript"></script>
<script type="text/javascript" src="${ctx}/components/wysiwyg/jquery.hotkeys.js">javascript"></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了。

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


相关文章

  • 富文本域数据保存到数据库
  • jfinal与bootstrap的登录跳转实战
  • 极致ajax局部和整体刷新
  • jfinal文件上传
  • 再谈ajax局部刷新
  • 来看看怎么通过a标签打开一个对话框
  • jfinal为weebox弹出框传递参数

乔布斯语录

那么人生何处不爬虫爬虫请标http://blog.csdn.net/qing_gee
对自己负责,对父母感恩!

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


http://www.niftyadmin.cn/n/998817.html

相关文章

网友整理的Flex开源项目(值得收藏)

FLEX优秀开源项目介绍 对于开源项目的开发者&#xff0c;我是一直非常敬佩的&#xff0c;一直非常想加入到这队伍中&#xff0c;无奈能力不够。但我想&#xff0c;对这些优秀的开源项目进行一下宣传&#xff0c;也算是一点点贡献吧&#xff0c;呵呵&#xff0c;下面列出的是我最…

时间治愈的,从来都是想改变的人

时间能治愈的&#xff0c;从来都是想改变的人。 这个题目我从早上看了第一眼之后就&#xff0c;中午便记不得了。然后我中午又看了一遍&#xff0c;晚上又想不起来了。然后刚刚我又看了一遍&#xff0c;隔十多分钟之后又想不起来了。说明这句话实在是太拗口了。但是呢&#xff…

NFX UNISTACK

NFX UNISTACK &#xff1a;http://www.nuget.org/packages/NFX/

CentOS7上安装、配置、监控RabbitMQ

CentOS7上安装、配置、监控RabbitMQRabbitMQ是流行的开源消息队列系统&#xff0c;是AMQP&#xff08;Advanced Message Queuing Protocol高级消息队列协议&#xff09;的标准实现&#xff0c;用erlang语言开发。RabbitMQ据说具有良好的性能和时效性&#xff0c;同时还能够非常…

论创新

文章目录创新非常的难&#xff0c;以前智能操作系统是有的&#xff0c;诺基亚和windows都可以算吧&#xff0c;触摸屏是有的&#xff0c;微软和HTC以都出过windows的触摸屏手机&#xff0c;还有其他一些厂家也出过。但是&#xff0c;把这些技术结合起来进行创新&#xff0c;其实…

Linux中的常用内存问题检测工具

原文地址&#xff1a;http://blog.csdn.net/jinzhuojun/article/details/46659155 C/C等底层语言在提供强大功能及性能的同时&#xff0c;其灵活的内存访问也带来了各种纠结的问题。如果crash的地方正是内存使用错误的地方&#xff0c;说明你人品好。如果crash的地方内存明显不…

apache开源项目--Cassandra

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发&#xff0c;用于储存特别大的数据。Facebook目前在使用此系统。 主要特性&#xff1a; 分布式 基于column的结构化 高伸展性 Cassandra的主要特点就是它不是一个数据库&#xff0c;而是由一堆数据库…

spring事务学习(转账案例)(二)

四、通过springAop进行事务管理 继续从第一个无事务操作的项目中进行更改。 只修改applicationContext.xml配置文件&#xff0c;注意设置transaction引用 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.…