`
axl234
  • 浏览: 268519 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript模拟QQ签名(HTML5 contenteditable属性)

 
阅读更多

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>contenteditable</title>
<style>
body, p {
    margin: 0;
    padding: 0;
}
.layout-box {
    padding: 10px;
    width: 300px;
    height: 36px;
    margin: 50px auto;
    background-color: green;
    font-size: 0;
}
#signature,
.layout-box:before {
    display: inline-block;
    vertical-align: middle;
}
.layout-box:before {
    content: '';
    width: 0;
    height: 100%;
    overflow: hidden;   
}
#signature {
    width: 100%;
    max-height: 36px;
    min-height: 18px;
    line-height: 18px;
    background-color: #FFF;
    font-size: 12px;
    color: #000;
    word-break: break-all;
}
#signature:focus {
    outline: none;
}
</style>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>

<div class="layout-box">
    <p id="signature">编辑个性签名</p>
</div>

<script>
/*

一、思路

1、单击元素时,使元素可以编辑,并获得焦点
2、按下键盘检测用户编辑元素中的文本
3、监听按下Enter键操作或离开可编辑元素焦点时,更新数据库

*/

$(function(){
    // return obj { length: 字节长度, limitStr: 限定的字符串(字节长度小于等于intVal) }
    function getStringByteInfo ( string, intVal ) {
        var str = $.trim(string) || '', length = str.length, len, reg, charStr, limitStr = '';
        if ( length > 0 ) {
            len = 0;
            reg = /[^\x00-\xff]/;  // 匹配双字节字符(包括汉字在内)

            for ( var i = 0; i < length; i++) {
                charStr = str.charAt(i);
                if ( reg.test(charStr) ) {
                    len += 2;
                }
                else {
                    len ++;
                }
                if (len <= intVal) {
                    limitStr += str.charAt(i);
                }
            }
        }
        return {
            length: len || 0,
            limitStr: limitStr || ''
        }
    }

    // 检测文本字节长度
    function detectionLength ( jqObj ) {
        var $obj = jqObj || $(),
        str = $obj.text(),
        strObj = getStringByteInfo(str, 40);

        if (strObj.length > 40) {
            alert('最多只能输入40字节');
            $obj.text(strObj.limitStr);
        }
    }

    // 更新数据库
    function saveSignature ( jqObj ) {
        var $obj = jqObj || $(),
        str = $.trim($obj.text()),
        url = 'xxx?signature' + encodeURIComponent(str); // 假设这是发送ajax请求的url

        if (str != '' && str != '编辑个性签名') {
            $.ajax(url, {
                dataType: 'json',
                data: {},
                success: function(){
                    // do something
                },
                error: function(){},
                complete: function(){}
            });
        }
        else {
            $obj.text('编辑个性签名');
        }
    }

    // keyPress Liseners
    // 监听Enter键
    function enterLiseners ( jqObj, event ) {
        var $obj = jqObj || $(),
            code = event.keyCode || event.which;

        if (code === 13) {
            jqObj.removeAttr('contenteditable');
            saveSignature(jqObj);
        }
    }

    $('#signature')
    .bind('click', function(){
        $(this).attr('contenteditable', 'true').trigger('focus');
    })
    .bind('keydown', function(e){
        detectionLength($(this));
        enterLiseners($(this), e);  // 更新数据库
    })
    .bind('blur', function(){
        $(this).removeAttr('contenteditable');
        saveSignature($(this)); // 更新数据库
    })
});

</script>


</body>
</html>

分享到:
评论

相关推荐

    基于HTML5 contenteditable属性开发的富文本编辑器,PC端版本.zip

    其中,`contenteditable`属性就是HTML5提供的一种非常实用的功能,允许用户直接在浏览器中编辑网页内容,从而实现富文本编辑器的构建。本项目“基于HTML5 contenteditable属性开发的富文本编辑器,PC端版本.zip”...

    HTML5中对contenteditable属性的解释与规定

    ### HTML5中对contenteditable属性的解释与规定 #### contenteditable属性概述 `contenteditable` 是HTML5中引入的一个非常有用的属性,它允许开发者将网页中的任何元素变为可编辑的状态,从而实现富文本编辑器的...

    angular-contenteditable, "contenteditable" 属性的Angular 模型.zip

    angular-contenteditable, "contenteditable" 属性的Angular 模型 角 contenteditable 一个AngularJS指令,用于将html标记与 contenteditable 属性绑定到模型。安装bower install angular-contenteditable

    设置contenteditable属性可编辑HTML标签的内容(可代替textarea)

    contenteditable属性是HTML5中提供的一种新的属性,用于让任何HTML元素变为可编辑状态,这使得开发者能够轻松创建类似于textarea的文本输入控件。以往我们想要实现可编辑的文本区域,通常会使用textarea元素,但在...

    格式化的HTML文本转换成SVG文本源代码 利用contenteditable属性,div标签里的文本将可以编辑 借助execC

    利用contenteditable属性,div标签里的文本将可以编辑。借助execCommand,div标签的字体样式可以动态调整。源代码中包含了计算HTML文本结构、判断换行等功能,生成跟HTML所见一模一样的SVG文本。 yarn install ...

    HTML5新增属性与表单元素

    `contenteditable`属性是HTML5中用于控制元素内容是否可编辑的一个属性。该属性支持三个属性值:`true`(可编辑)、`false`(不可编辑)和`inherit`(继承父元素的状态)。如果该属性未设置或者设置为空字符串,其...

    js之向div contenteditable光标位置添加字符.html

    主要是div通过contenteditable实现可编辑状态,可以实现按钮点击在光标处添加字符的功能

    contenteditable元素的placeholder输入提示语设置方法

    在Web开发中,contenteditable属性是HTML5引入的一个非常实用的功能,它允许用户直接在页面上编辑内容。这个属性可以被赋予任何一个HTML元素,使其变成可编辑状态。通过这种方式,可以创建类似于文本编辑器的富文本...

    使用HTML5中的contentEditable来将多行文本自动增高

    HTML5中的`contentEditable`属性是一个非常实用的功能,它允许开发者将任何HTML元素转换为可编辑区域,使得用户可以直接在页面上编辑文本内容。这个属性是HTML5的新特性,最初由微软在Internet Explorer中引入,随后...

    html5模拟键盘打字高亮动画特效

    HTML5的`contenteditable`属性可以用来使任何元素具有可编辑性,使得用户可以直接在该元素内输入文本,从而模拟键盘打字。 接下来是`js`文件夹,这通常包含了JavaScript代码。JavaScript是实现动画和交互的关键。在...

    maxlength-contenteditable:用于contenteditable html属性的简单maxlength插件验证器,此插件不允许您放置超过指定的最大长度,还检查了从剪贴板粘贴

    用于contenteditable HTML属性的最大长度插件 用于contenteditable html属性的简单maxlength插件验证器,此插件不允许您放置超过指定的最大长度,还检查了从剪贴板粘贴的情况。 演示链接 安装 npm $ npm install ...

    HTML5学习心得总结(推荐)

    在HTML5中,开发者可以通过全局属性来增强内容的表现和功能性,例如,accesskey属性可以设定访问元素的快捷键,contenteditable属性可以使元素内容可编辑。 了解了HTML5的这些知识点后,开发者就可以利用HTML5制作...

    html5事件和标签属性

    事件属性在HTML5中扮演着重要角色,因为它们允许开发者通过JavaScript响应用户交互和页面状态变化,从而实现更丰富的用户体验。以下是对标题和描述中提到的HTML5事件属性和标签属性的详细说明: **事件属性** 1. *...

    Vue-html5-editor富文本编辑器插件 v1.1.1.zip

    Vue-html5-editor的核心是HTML5的contenteditable属性,通过这个属性,我们可以将任何DOM元素变为可编辑区域。编辑器提供了多种富文本编辑功能,如文字格式设置(加粗、斜体、下划线等)、列表、对齐方式、插入图片...

    qq邮箱的JS在线编辑器

    2. **富文本编辑**:编辑器通过创建一个隐藏的iframe或者div元素,并设置其contentEditable属性为true,使得用户可以直接在浏览器内进行文本编辑。编辑的内容会被实时转换成HTML格式,以便于在网络上传输和存储。 3...

    利用HTML5 Contenteditable实现网页编辑器

    解压密码:RJ4587 记得之前我们分享过一款jQuery轻量级网页编辑器和CSS3可视化网页编辑器 基于tinymce编辑器,都非常实用,今天我们再来分享一款利用HTML5 contenteditable属性实现的简易网页编辑器,目前我们只实现...

    HTML5全局属性和其他共4页.pdf.zip

    其中,HTML5的全局属性是一个重要的组成部分,它们可以应用于任何HTML元素,为开发者提供了更大的灵活性和控制力。这些属性并不局限于特定的元素类型,而是可以在整个文档中通用,帮助我们更加高效地编写代码。 ...

    electron+vue实现div contenteditable截图功能.docx

    在 electron+vue 实现 div contenteditable 截图功能中,还需要使用到 contenteditable 属性,该属性用于指定元素是否可以被编辑。在这个应用程序中,contenteditable 属性用于允许用户编辑 div 元素中的内容。 ...

Global site tag (gtag.js) - Google Analytics