文本域光标操作(选、添、删、取)的jQuery扩展

; (function ($) {
            /*
             * 文本域光标操作(选、添、删、取)的jQuery扩展 @Mr.Think http://mrthink.net/text-field-jquery-extend/
             */
            $.fn.extend({
                /*
                 * 获取光标所在位置
                 */
                iGetFieldPos: function () {
                    var field = this.get(0);
                    if (document.selection) {
                        //IE
                        $(this).focus();
                        var sel = document.selection;
                        var range = sel.createRange();
                        var dupRange = range.duplicate();
                        dupRange.moveToElementText(field);
                        dupRange.setEndPoint(‘EndToEnd‘, range);
                        field.selectionStart = dupRange.text.length - range.text.length;
                        field.selectionEnd = field.selectionStart + range.text.length;
                    }
                    return field.selectionStart;
                },
                /*
                 * 选中指定位置内字符 || 设置光标位置
                 * --- 从start起选中(含第start个),到第end结束(不含第end个)
                 * --- 若不输入end值,即为设置光标的位置(第start字符后)
                 */
                iSelectField: function (start, end) {
                    var field = this.get(0);
                    //end未定义,则为设置光标位置
                    if (arguments[1] == undefined) {
                        end = start;
                    }
                    if (document.selection) {
                        //IE
                        var range = field.createTextRange();
                        range.moveEnd(‘character‘, -$(this).val().length);
                        range.moveEnd(‘character‘, end);
                        range.moveStart(‘character‘, start);
                        range.select();
                    } else {
                        //非IE
                        field.setSelectionRange(start, end);
                        $(this).focus();
                    }
                },
                /*
                 * 选中指定字符串
                 */
                iSelectStr: function (str) {
                    var field = this.get(0);
                    var i = $(this).val().indexOf(str);
                    i != -1 ? $(this).iSelectField(i, i + str.length) : false;
                },
                /*
                 * 在光标之后插入字符串
                 */
                iAddField: function (str) {
                    var field = this.get(0);
                    var v = $(this).val();
                    var len = $(this).val().length;
                    if (document.selection) {
                        //IE
                        $(this).focus()
                        document.selection.createRange().text = str;
                    } else {
                        //非IE
                        var selPos = field.selectionStart;
                        $(this).val($(this).val().slice(0, field.selectionStart) + str + $(this).val().slice(field.selectionStart, len));
                        this.iSelectField(selPos + str.length);
                    };
                },
                /*
                 * 删除光标前面(-)或者后面(+)的n个字符
                 */
                iDelField: function (n) {
                    var field = this.get(0);
                    var pos = $(this).iGetFieldPos();
                    var v = $(this).val();
                    //大于0则删除后面,小于0则删除前面
                    $(this).val(n > 0 ? v.slice(0, pos - n) + v.slice(pos) : v.slice(0, pos) + v.slice(pos - n));
                    $(this).iSelectField(pos - (n < 0 ? 0 : n));
                }
            });
        })(jQuery);

应用场景

<!DOCTYPE html>
<html>
<head>
    <title>无标题页</title>

    <script type="text/javascript" src="http://sy.zgsapt.com/js/jquery-1.7.2.min.js"></script>

    <script type="text/javascript">
        ; (function ($) {
            /*
             * 文本域光标操作(选、添、删、取)的jQuery扩展 @Mr.Think http://mrthink.net/text-field-jquery-extend/
             */
            $.fn.extend({
                /*
                 * 获取光标所在位置
                 */
                iGetFieldPos: function () {
                    var field = this.get(0);
                    if (document.selection) {
                        //IE
                        $(this).focus();
                        var sel = document.selection;
                        var range = sel.createRange();
                        var dupRange = range.duplicate();
                        dupRange.moveToElementText(field);
                        dupRange.setEndPoint(‘EndToEnd‘, range);
                        field.selectionStart = dupRange.text.length - range.text.length;
                        field.selectionEnd = field.selectionStart + range.text.length;
                    }
                    return field.selectionStart;
                },
                /*
                 * 选中指定位置内字符 || 设置光标位置
                 * --- 从start起选中(含第start个),到第end结束(不含第end个)
                 * --- 若不输入end值,即为设置光标的位置(第start字符后)
                 */
                iSelectField: function (start, end) {
                    var field = this.get(0);
                    //end未定义,则为设置光标位置
                    if (arguments[1] == undefined) {
                        end = start;
                    }
                    if (document.selection) {
                        //IE
                        var range = field.createTextRange();
                        range.moveEnd(‘character‘, -$(this).val().length);
                        range.moveEnd(‘character‘, end);
                        range.moveStart(‘character‘, start);
                        range.select();
                    } else {
                        //非IE
                        field.setSelectionRange(start, end);
                        $(this).focus();
                    }
                },
                /*
                 * 选中指定字符串
                 */
                iSelectStr: function (str) {
                    var field = this.get(0);
                    var i = $(this).val().indexOf(str);
                    i != -1 ? $(this).iSelectField(i, i + str.length) : false;
                },
                /*
                 * 在光标之后插入字符串
                 */
                iAddField: function (str) {
                    var field = this.get(0);
                    var v = $(this).val();
                    var len = $(this).val().length;
                    if (document.selection) {
                        //IE
                        $(this).focus()
                        document.selection.createRange().text = str;
                    } else {
                        //非IE
                        var selPos = field.selectionStart;
                        $(this).val($(this).val().slice(0, field.selectionStart) + str + $(this).val().slice(field.selectionStart, len));
                        this.iSelectField(selPos + str.length);
                    };
                },
                /*
                 * 删除光标前面(-)或者后面(+)的n个字符
                 */
                iDelField: function (n) {
                    var field = this.get(0);
                    var pos = $(this).iGetFieldPos();
                    var v = $(this).val();
                    //大于0则删除后面,小于0则删除前面
                    $(this).val(n > 0 ? v.slice(0, pos - n) + v.slice(pos) : v.slice(0, pos) + v.slice(pos - n));
                    $(this).iSelectField(pos - (n < 0 ? 0 : n));
                }
            });
        })(jQuery);

        $(document).ready(function () {
            $("#numd").bind("mouseleave", function () {
                document.getElementById(‘keybored‘).style.display = ‘none‘;
                document.getElementById(‘Nm‘).blur();
            });

            $("#Nm").focus(function () {
                document.getElementById(‘keybored‘).style.display = ‘‘;
            });
            $(".readbtns").click(function () {
                $("#Nm").iAddField($(this).val());

            });
            $(".returns").click(function () {
                $("#Nm").iDelField(1);

            });
        });

    </script>

</head>
<body>
    <ul>
        <li>
            <input />
            <div>
            </div>
        </li>
    </ul>
    <input id="hid" type="text" value="" style="display: none" />
    <span id="numd" style="border: 1px solid red; clear: both; display: inline-block; font: 800em;">
        <input type="text" id="Nm" name="Nm" value="" />
        <div style="display: none; border: 1px solid #A2B4C6; width: 150px; height: 400px;"
            id="keybored">
            <input type="button" class="readbtns" value="1" />
            <input type="button" class="readbtns" value="2" />
            <input type="button" class="readbtns" value="3" />
            <input type="button" class="readbtns" value="4" />
            <input type="button" class="readbtns" value="5" />
            <input type="button" class="readbtns" value="6" />
            <input type="button" class="readbtns" value="7" />
            <input type="button" class="readbtns" value="8" />
            <input type="button" class="readbtns" value="9" />
            <input type="button" class="returns" value="<<---" />
        </div>
    </span>
</body>
</html>

经过查阅jQuery的hover

$(‘#hover_div‘).hover(function()
{
/* something to do on mouseenter */
},
function()
{
/* something to do on mouseleave */
});

所以上面的bind("mouseleave")完全可以用hover函数

 $("#numd").hover(function () {
                document.getElementById(‘keybored‘).style.display = ‘‘;
            }, function () {
                document.getElementById(‘keybored‘).style.display = ‘none‘;
                document.getElementById(‘Nm‘).blur();

            });

文本域光标操作(选、添、删、取)的jQuery扩展

时间: 2024-10-25 12:28:37

文本域光标操作(选、添、删、取)的jQuery扩展的相关文章

jquery 文本域光标操作(选、添、删、取)

一.JQuery扩展 ; (function ($) { /* * 文本域光标操作(选.添.删.取)的jQuery扩展 http://www.cnblogs.com/phpyangbo/p/5528648.html */ $.fn.extend({ /* * 获取光标所在位置 */ iGetFieldPos: function () { var field = this.get(0); if (document.selection) { //IE $(this).focus(); var sel

js实现文本框文本域光标处插入图片文本的插件(并且光标在插入内容的内容后显示)

js: /******************************************* * * 插入光标处的插件 * @authors Du xin li * @update    2015-10-25 **********************************************/ $.fn.extend({      insertContent : function(myValue, t) {          var that = $(this);        v

JS-007-富文本域操作

在日常 web 编写过程中,富文本域几乎成为了一个网站不可页面元素,同时,其也有着各种各样的实现方式,网络上也存在着各种各样的集成插件可供引用.此文以 js 获取.修改 163 邮箱写邮件时的邮件内容为例,演示 js 操作富文本域的方法.其他各种富文本域内容的修改可参考此文进行编写,感兴趣的小主们,可以尝试一下当前流行的各种富文本域插件. 首先简单演示一下 163 写邮件时,收件人的获取.修改,其页面源码如下所示: 以下为相应元素获取.修改的 js 演示: 以下为 js 获取富文本域内容演示:

用js控制按钮时间,将指定内容添加到文本域的光标所在位置。

<pre class="javascript" name="code"> var fm = document.getElementsByTagName('form')[0]; var button = document.getElementsByName("button"); //获取一个cookie的值 function getCookie(index){ var allcookies = document.cookie; var

2_Matlab图像的空间域变换操作

1. 目的:为了达到某种视觉效果,变换输入图像的像素位置,通过把输入图像的像素位置映射到一个新的位置以达到改变原图像显示效果的目的. 2. 操作包括: ? 图像插值(Interpolation) ? 图像缩放(Resizing) ? 图像旋转(Rotation) ? 图像剪切(Cropping) 3.图像差值操作 1)原因:在处理图像的过程中,比如对图像进行缩放及旋转,这时图像中每个像素的值都要发生变化.数字图像的坐标是整数,经过这些变换之后的坐标不一定是整数,使得输入图像的像素点经过空间域变换

GUI编程笔记07:GUI把文本框的值移到文本域案例

1.首先我们了解一下我们的需求,如下: 输入“风清扬”,点击“数据转移”,这样的文本会出现到下面的文本域中,这就是我们的需求. 2.代码如下: package cn.itcast_05; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.Action

在Word指定位置插入富文本域值(html文本)

遇到此问题,首先想到的就是各种百度.结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊. 首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的:二是我有ASPOSE.Word. 再整理下思路:在Word中插入Html,首先有一点是肯定的,Word跟Html都是Document结构,这点应该是没啥怀疑的.如此的话就感觉好办多了,无非就是Document上插入几个节点,在Html插入节点的方式完全可以运用到此地方. 那么第一种解决方法就是:首先把Wo

HTML&amp;CSS基础学习笔记1.23-表单的文本域和下拉列表

文本域 <textarea>标签定义多行的文本输入控件. 平时在网页上的一些需要输入比较多的内容的输入框,比如回复帖子,回答问题等,都可以用<textarea>标签. <textarea>文本区中可容纳无限数量的文本,可以通过 [cols] 和 [rows] 属性来规定 <textarea> 的尺寸. 例如: <textarea cols=”100” rows=”6”></textarea>   表示尺寸为100列6行的文本域. 实例

文本域长度限制

今儿个给表单的标签加长度限制,一路 input="type" maxlength="**" 下来很顺.这时杀出个textarea,来也给你加个maxlength. 不过textarea对我说:"哥我没这属性,您看给换个吧..."  没办法,(现在我使用的FireFox15.0.1.Chrome25.0.1364.160支持此属性)既然没这属性那咱就换吧,用事件来控制. 网上查了下,用于监控文本域内容变可以用onchange.onpropertyc