python把光标定义到指定的位置并删除之前的字符_div设置为contenteditable="true",怎么通过自定义button删除键,删除光标前的一个字符?...

1.下面的这段代码只在 textarea input下有用,对于div标签contenteditable="true" 没有用

$.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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值