功能简单例子

////[email protected]发布---------------------------//
function textChange(options) {
    var opt = $.extend({
        Content: ‘‘
    }, options);
    var objId = opt.Content;
    var obj = $("#" + objId);
    obj.keydown(function (evt) {
        var k = window.event ? evt.keyCode : evt.which;
        var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;
        if (isChrome&&k==16) {
            k=50;
        }
        //为@键值时
        //这里监听输入框的keyup事件
        //不为空 && 不为上箭头或下箭头或回车
        if (k == 50 && evt.shiftKey) {
            buildTip(obj, ‘‘);
        }
        else if (k == 13 || k == 38 || k == 40) { //回车
            if ($(‘#searchresult ul‘).length > 0) {
                if (k == 38) { //上箭头
                    $(‘#searchresult a.searchHover‘).parent().prev().find("a").addClass("searchHover");
                    $(‘#searchresult a.searchHover‘).parent().next().find("a").removeClass("searchHover");
                } else if (k == 40) { //下箭头
                    $(‘#searchresult a.searchHover‘).parent().next().find("a").addClass("searchHover");
                    $(‘#searchresult a.searchHover‘).parent().prev().find("a").removeClass("searchHover");
                } else if (k == 13) { //回车
                    var selContent = $(‘#searchresult a.searchHover‘).attr(‘rname‘);
                    if (selContent == "" || selContent == undefined) return;
                    var content = selContent + ‘ ‘;

//移除textarea里面@后面多余数据
                    var pointIndex = getPositionForTextArea(obj[0]);
                    var searchName = "";
                    var atIndex = obj.val().substring(0, pointIndex).lastIndexOf("@", atIndex);
                    obj.val(obj.val().substring(0, atIndex + 1) + obj.val().substring(pointIndex));

var newIndex = getPositionForTextArea(obj[0]);
                    setCursorPosition(obj[0], newIndex - (newIndex - atIndex - 1));

resetPostion(content, obj);
                    $("#searchresult").remove();
                }
                evt.returnValue = false;
                return false;
            }
        }
        else {
            //$("#searchresult").remove();
        }
    });

obj.keyup(function (evt) {
        var k = window.event ? evt.keyCode : evt.which;
        if (k != 13 && k != 38 && k != 40) {
            if ($(‘#searchresult ul‘).length > 0) {
                var pointIndex = getPositionForTextArea(obj[0]);
                var searchName = "";
                var atIndex = obj.val().substring(0,pointIndex).lastIndexOf("@", atIndex);
                searchName = obj.val().substring(atIndex + 1, pointIndex);
                buildTip(obj, searchName);
            }
        }
    });
}

//构建提示信息
function buildTip(obj, serachname) {
    $.ajax({
        type: ‘post‘,
        url: ‘‘,
        data: ‘‘,
        dataType: ‘json‘,
        success: function (data) {
            var objData = data.list;
            if (objData.length > 0) {
                if ($("#searchresult").length > 0)
                    $("#searchresult").remove();
                var layer = "";
                layer = "<div id=‘searchresult‘><ul>";
                $.each(objData, function (idx, item) {
                    layer += "<li><a href=‘javascript:void(0);‘ ></a></li>";
                });
                layer += "</ul></div>";

//将结果添加到div中
                obj.after($(layer));
                $("#searchresult a:first").addClass("searchHover");
                $("#searchresult").css("display", "");

//鼠标点击事件
                $("#searchresult a").click(function () {
                    var content = $(this).attr(‘rname‘) + ‘ ‘;
                    resetPostion(content, obj);
                    $("#searchresult").empty();
                    $("#searchresult").css("display", "none");
                });

$("#searchresult a").each(function () {
                    $(this).mouseover(function (e) {
                        $("#searchresult a").removeClass("searchHover");
                        $(this).addClass("searchHover");
                    });
                });

//evt.stopPropagation();

//处理js事件冒泡问题
                $(‘body‘).bind("click", function (e) {
                    $("#searchresult").remove();
                    e.stopPropagation();
                });
                $("#searchresult").bind("click", function (e) {
                    e.stopPropagation();
                });

} else {
                $("#searchresult").remove();
            }
        }
    });
}

var cpos = 0;
function resetPostion(content, target) {
    var tc = target[0];

if (document.selection) {//ie
        target.bind("click keyup", function (e) {//点击或键盘动作时设置光标值
            e.stopPropagation();
            cpos = getPositionForTextArea(tc);
        });
    }
    var tclen = target.val().length;
    var pos = 0;
    if (typeof document.selection != "undefined") {//IE
        target.focus();
        //setCursorPosition(tc, cpos);//设置焦点
        document.selection.createRange().text = content;
        //计算光标位置
        pos = getPositionForTextArea(tc);
    } else {//火狐
        //计算光标位置
        pos = tc.selectionStart + content.length;
        target.val(target.val().substr(0, tc.selectionStart) + content + target.val().substring(tc.selectionStart, tclen));
    }
    cpos = pos;
    setCursorPosition(tc, pos); //设置焦点
}

//textarea设置光标位置
function setCursorPosition(ctrl, pos) {
    if (ctrl.setSelectionRange) {
        ctrl.focus();
        ctrl.setSelectionRange(pos, pos);
    } else if (ctrl.createTextRange) {// IE Support
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd(‘character‘, pos);
        range.moveStart(‘character‘, pos);
        range.select();
    }
}

//获取多行文本框光标位置
function getPositionForTextArea(obj, content) {
    var CaretPos = -1;
    if (typeof document.selection != "undefined") {//IE
        var Sel = document.selection.createRange();
        var Sel2 = Sel.duplicate();
        Sel2.moveToElementText(obj);
        while (Sel2.inRange(Sel)) {
            Sel2.moveStart(‘character‘);
            CaretPos++;
        }
    }
    else {
        if (content == undefined)
            content = "";
        CaretPos = obj.selectionStart + content.length;
    }
    return CaretPos;

}

时间: 2024-11-06 09:38:29

功能简单例子的相关文章

事件简单例子

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Runtime.InteropServices; 6 7 namespace EventTest 8 { 9 /// <summary> 10 /// 事件订阅者类 11 /// </summary> 12 class Program 13 { 14 static v

spring mvc(注解)上传文件的简单例子

spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少 大家可以看具体代码如下: web.xml &

C#设计模式---观察者模式简单例子

在开发过程中经常遇到一个模块中的 一个方法调用了其他模块中相关的方法 比如说在一个系统中,如果出现了错误,就调用专门进行错误处理的模块中的方法进行错误处理 而因为错误处理的操作有很多,所以将这些具体的操作封装在其他的模块中 在专门进行错误处理的模块中调用其他模块中的错误操作方法 这样一来在主系统中只要实例化专门进行错误处理的模块对象 并调用其相关的方法,其他模块中的具体方法也都会被执行 这时专门进行错误处理的模块被称为发布者 其他拥有具体错误操作的模块称为订阅者 只要发布者一发布信息(方法被调用

jdbc 事务简单例子

 一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(durability)的缩写.事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效.一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态.隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见.持久性表示已提交的

Jython的安装及简单例子

这是我参照之前在iOS项目中用过的一个不规则形状按钮的第三方Button,这里用Cocos2d-x实现一个相似功能的按钮. 原文地址:http://blog.csdn.net/qqmcy/article/details/26161339 代码下载:http://download.csdn.net/detail/qqmcy/7365843 使用方法: .h // // TestScene.h // maptest // // Created by 杜甲 on 14-5-18. // // #ifn

java socket编程开发简单例子

1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特性,如果要测试以下代码,java版本不能低于1.8 // 客户端 public static void main(String[] args) { try (Scanner scan = new Scanner(System.in); Socket client = new Socket("127.0.0.1"

JSP验证码简单例子

原文:JSP验证码简单例子 源代码下载地址:http://www.zuidaima.com/share/1550463705320448.htm 几年前用servlet写的一个简单验证码功能.还有许多要完善的,但是验证码已经完善了. 包含登陆界面,可以自己修改下验证码代码把验证码的代码写进后台,生成图片后再输出到页面.也可以把验证码生成更复杂些. 登陆成功  验证失败

java爬取网页内容 简单例子(2)——附jsoup的select用法详解

http://www.cnblogs.com/xiaoMzjm/p/3899366.html [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表达式 对于没有很好正则表达式基础的人——比如说我T_T——是一件蛮困难的事.这一篇,我们改用jsoup,一个强大的解析html工具,去解析html,你会发现,一切都变得很容易. [准备工作] 下载:jsou

ko 简单例子

Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板(Templating) 工作中,最重要的是建模,模型建好了,能减少很多的工作和代码,只要着重于维护好自己的模板. 用好它的依赖关系可以使连动很省事,不用操作dom元素,全部都是dom bind ,使页面和数据相分离,结构更清晰,更易于维护 简单例子: html:<p>First name: &l