如何在光标处输入内容

龙思霓 2013-09-25 09:45:19
$.fn.extend({
position1:function(value){
var elem = this[0];
if (elem&&(elem.tagName=="TEXTAREA"||elem.type.toLowerCase()=="text")) {
if($.browser.msie){
var rng;
if(elem.tagName == "TEXTAREA"){
rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
}else{
rng = document.selection.createRange();
}
if( value === undefined ){
rng.moveStart("character",-event.srcElement.value.length);
return rng.text.length;
}else if(typeof value === "number" ){
var index=this.position();
index>value?( rng.moveEnd("character",value-index)):(rng.moveStart("character",value-index));
rng.select();
}
}else{
if( value === undefined ){
return elem.selectionStart;
}else if(typeof value === "number" ){
elem.selectionEnd = value;
elem.selectionStart = value;
}
}
}else{
if( value === undefined )
return undefined;
}
}
});

var teleNumIndex;

/**
* 设定当前光标的位置
*/
function fixCursorPosition(){
if($.browser.msie){
$("#dialTxt").select();
var range = document.selection.createRange();
range.moveStart('character',teleNumIndex);
range.collapse(true);
range.select();
}else{
$("#dialTxt").get(0).setSelectionRange(teleNumIndex,teleNumIndex);
$("#dialTxt").get(0).focus();
}
}


/**
* 通过拨号盘设置电话号码
*/
function setOBNumber(number)
{
//根据光标位置,在光标位置加一个数字
var xxx = teleNumIndex;
var teleNumber = $("#dialTxt").val();
if(teleNumber.length >= 24)
{
return;
}
var lastValue = "";
for(var i = 0; i < teleNumber.length + 1; i++){
if(i == teleNumIndex){
lastValue += number;
}
lastValue += teleNumber.charAt(i);
}
if(lastValue == "") lastValue = number;
$("#dialTxt").val(lastValue);
teleNumIndex++;
fixCursorPosition();
}
...全文
662 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙思霓 2013-09-29
  • 打赏
  • 举报
回复

function delOBNumber()
{
	var number = "" + $("#agentCall_telephoneDial_phoneNumber").val();
	if(number.length > 0)
	{
		if(teleNumIndex <= 0) return false;
		var lastValue = "";
		//根据光标位置,删除光标前一个数字
		for(var i=0; i<number.length; i++){
			if(i != teleNumIndex-1) lastValue += number.charAt(i);
		}
		$("#agentCall_telephoneDial_phoneNumber").val(lastValue);
	}
	teleNumIndex--;
	if(teleNumIndex < 0) teleNumIndex = 0;
	fixCursorPosition();	
}
龙思霓 2013-09-26
  • 打赏
  • 举报
回复

/**
 * DIV监听捕捉回车键
 */
function ListenKey(evt)
{
	evt = (evt)? evt : window.event;
	var keycode = evt.keyCode?evt.keyCode:evt.which;
    if(keycode == 13)
	{
    	if (evt.stopPropagation) // for Mozilla and Opera 
		{			
    		evt.stopPropagation(); 
    		evt.preventDefault();
		}
		else if(window.event) // for IE
		{			
			window.event.cancelBubble = true; 
			window.event.returnValue = false;
		}
    	// 回车键后,手动呼出
    	phoneNum('Call');
	}
    else if (evt.shiftKey)
    {
    	if (51 == keycode //shift + 3 = #
    	 || 56 == keycode //shift + 8 = *
    	 || keycode == 35 //end
    	 || keycode == 36 //home
    	 || keycode == 37 //←
    	 || keycode == 39 //→
    	 )
    	{
			return true;
    	}
    }
    else if ((keycode >= 48 && keycode <= 57)
        	|| (keycode >= 96 && keycode <= 105) 
        	|| keycode == 46 //delete
	    	|| keycode == 8 //backspace 
	    	|| keycode == 9 //tab键
	    	|| keycode == 35 //end
	    	|| keycode == 36 //home
	    	|| keycode == 37 //←
	    	|| keycode == 39 //→
	    	// || keycode == 45 //-  //注释掉,另,修改文本框 keyup事件,修改问题单DTS2011041104803,
	    	|| keycode == 106 //小键盘 *
	    	)
    { 
    	return true;
    }
    else if (evt.ctrlKey)//开放复制粘贴
    {
    	if (keycode == 67  //c  复制
    	 || keycode == 86  //v  粘贴
    	 || keycode == 88  //x  剪切
    	 || keycode == 90  //z  撤销
    	 || keycode == 65  //a  全选
    	 )
    	{
    		return true;
    	}
    }    
	return false;
}
龙思霓 2013-09-25
  • 打赏
  • 举报
回复
$('#dialTxt').click(function(){ teleNumIndex = $('#dialTxt').position1(); }); $('#dialTxt').keyup(function(){ teleNumIndex = $('#dialTxt').position1(); });

2,127

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧