文本域光標(biāo)操作的jQuery擴(kuò)展分享
該針對(duì)文本域的擴(kuò)展實(shí)現(xiàn)的功能及使用方法:
1、獲取光標(biāo)位置:$(elem).iGetFieldPos();
2、設(shè)置光標(biāo)位置:$(elem).iSelectField(start);
3、選中指定位置內(nèi)的字符:$(elem).iSelectField(start,end);
4、選中指定的字符:$(elem).iSelectStr(str);
5、在光標(biāo)之后插入字符串:$(elem).iAdd(str);
6、刪除光標(biāo)前面(-n)或者后面(n)的n個(gè)字符:$(elem).iDel(n);
jQuery擴(kuò)展代碼:
;(function($){
/*
* 文本域光標(biāo)操作(選、添、刪、?。┑膉Query擴(kuò)展
*/
$.fn.extend({
/*
* 獲取光標(biāo)所在位置
*/
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;
},
/*
* 選中指定位置內(nèi)字符 || 設(shè)置光標(biāo)位置
* --- 從start起選中(含第start個(gè)),到第end結(jié)束(不含第end個(gè))
* --- 若不輸入end值,即為設(shè)置光標(biāo)的位置(第start字符后)
*/
iSelectField:function(start,end){
var field=this.get(0);
//end未定義,則為設(shè)置光標(biāo)位置
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;
},
/*
* 在光標(biāo)之后插入字符串
*/
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);
};
},
/*
* 刪除光標(biāo)前面(-)或者后面(+)的n個(gè)字符
*/
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);
加載于擴(kuò)展代碼,然后根據(jù)擴(kuò)展中的方法名調(diào)用即可。
相關(guān)文章
jQuery實(shí)現(xiàn)iframe父窗體和子窗體的相互調(diào)用
這篇文章主要介紹了jQuery實(shí)現(xiàn)iframe父窗體和子窗體的相互調(diào)用,涉及jQuery窗體調(diào)用的相關(guān)技巧,需要的朋友可以參考下2016-06-06
jQuery的實(shí)現(xiàn)原理的模擬代碼 -1 核心部分
最近又看了一下 jQuery 1.4.2, 為了便于理解,將 jQuery 的核心使用比較簡(jiǎn)單的代碼模擬一下。方便學(xué)習(xí)。2010-08-08
jQGrid動(dòng)態(tài)填充select下拉框的選項(xiàng)值(動(dòng)態(tài)填充)
這篇文章主要介紹了jQGrid動(dòng)態(tài)填充select下拉框的選項(xiàng)值(動(dòng)態(tài)填充)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
JQuery 確定css方框模型(盒模型Box Model)
做過(guò)前臺(tái)設(shè)置的都知道css存在兩種盒模型,W3C標(biāo)準(zhǔn)的方框模型和IE瀏覽器的方框模型。除IE以外的大多數(shù)瀏覽器只支持W3C方框模型。IE瀏覽器能夠根據(jù)頁(yè)面的呈現(xiàn)模式的定義而是用對(duì)性的方框模式。已用哪中呈現(xiàn)的模式取決于頁(yè)面上的DOCTYPE的聲明。2010-01-01
關(guān)于JQuery($.load)事件的用法和分析
本篇文章小編為大家介紹,關(guān)于JQuery($.load)事件的用法與分析,有需要的朋友可以關(guān)注一下2013-04-04
jQuery的實(shí)現(xiàn)原理的模擬代碼 -2 數(shù)據(jù)部分
在 jQuery 中,可以對(duì)每一個(gè) DOM 對(duì)象保存私有的數(shù)據(jù)。2010-08-08
jQuery Validate設(shè)置onkeyup驗(yàn)證的實(shí)例代碼
jQuery Validate 插件為表單提供了強(qiáng)大的驗(yàn)證功能,讓客戶端表單驗(yàn)證變得更簡(jiǎn)單,同時(shí)提供了大量的定制選項(xiàng),滿足應(yīng)用程序各種需求。這篇文章主要介紹了jQuery Validate設(shè)置onkeyup驗(yàn)證的相關(guān)資料,需要的朋友可以參考下2016-12-12

