让TextArea支持Tab键(兼容IE、FF)
2011-04-24 03:21
549 查看
显示列表
让TextArea支持Tab键(兼容IE、FF)
2009-03-28
http://www.huanghengxu.com/Html/Article/125.htm
<script language="JavaScript">
<!--
var TextAreaTab =
{
Register : function(obj)
{
// 绑定事件
obj.onclick = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onselect = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onkeyup = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onkeydown = new Function('TextAreaTab.InsertTab(this)');
},
// 这个只对ie有用
// 创建光标所在位置的对象,就是要插入的位置。
// 其实就是光标选中的对象,对它进行操作就可以了。
CreateInsertPosition : function(obj)
{
if (obj.createTextRange) // IE
{
obj.InsertPosition = document.selection.createRange().duplicate(); // 光标选中的对象
}
},
InsertTab : function(obj)
{
var evt = this.GetEvent(); // 返回 event 对象
if (evt.keyCode == 9) // 按下了Tab键
{
if (obj.createTextRange && obj.InsertPosition) // IE
{
// 赋予对象内容
obj.InsertPosition.text = '/t';
evt.returnValue = false;
}
else if (window.getSelection) // FF
{
var scrollTop = obj.scrollTop; // 滚动的位置
var start = obj.selectionStart; // 当前光标所在位置
var pre = obj.value.substr(0, obj.selectionStart); // 光标之前的内容
var next = obj.value.substr(obj.selectionEnd); // 光标之后的内容
obj.value = pre + '/t' + next;
evt.preventDefault();
// 设置光标在插入点之后的位置
obj.selectionStart = start + 1;
obj.selectionEnd = start + 1;
obj.scrollTop = scrollTop;
}
}
},
// 返回 event 对象
GetEvent : function()
{
if(document.all) // IE
{
return window.event;
}
func = this.GetEvent.caller;
while(func != null)
{
var arg0 = func.arguments[0];
if(arg0)
{
if((arg0.constructor == Event || arg0.constructor == MouseEvent)
||(typeof(arg0) == "object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func = func.caller;
}
return null;
}
}
//-->
</script>
<textarea id="TextArea" rows="10" cols="50"></textarea>
<script language="JavaScript">
<!--
var textarea = document.getElementById('TextArea');
TextAreaTab.Register(textarea); // 注册一下对象,就可以让这个对象现实Tab功能
//-->
</script>
让TextArea支持Tab键(兼容IE、FF)
2009-03-28
http://www.huanghengxu.com/Html/Article/125.htm
<script language="JavaScript">
<!--
var TextAreaTab =
{
Register : function(obj)
{
// 绑定事件
obj.onclick = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onselect = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onkeyup = new Function('TextAreaTab.CreateInsertPosition(this)');
obj.onkeydown = new Function('TextAreaTab.InsertTab(this)');
},
// 这个只对ie有用
// 创建光标所在位置的对象,就是要插入的位置。
// 其实就是光标选中的对象,对它进行操作就可以了。
CreateInsertPosition : function(obj)
{
if (obj.createTextRange) // IE
{
obj.InsertPosition = document.selection.createRange().duplicate(); // 光标选中的对象
}
},
InsertTab : function(obj)
{
var evt = this.GetEvent(); // 返回 event 对象
if (evt.keyCode == 9) // 按下了Tab键
{
if (obj.createTextRange && obj.InsertPosition) // IE
{
// 赋予对象内容
obj.InsertPosition.text = '/t';
evt.returnValue = false;
}
else if (window.getSelection) // FF
{
var scrollTop = obj.scrollTop; // 滚动的位置
var start = obj.selectionStart; // 当前光标所在位置
var pre = obj.value.substr(0, obj.selectionStart); // 光标之前的内容
var next = obj.value.substr(obj.selectionEnd); // 光标之后的内容
obj.value = pre + '/t' + next;
evt.preventDefault();
// 设置光标在插入点之后的位置
obj.selectionStart = start + 1;
obj.selectionEnd = start + 1;
obj.scrollTop = scrollTop;
}
}
},
// 返回 event 对象
GetEvent : function()
{
if(document.all) // IE
{
return window.event;
}
func = this.GetEvent.caller;
while(func != null)
{
var arg0 = func.arguments[0];
if(arg0)
{
if((arg0.constructor == Event || arg0.constructor == MouseEvent)
||(typeof(arg0) == "object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func = func.caller;
}
return null;
}
}
//-->
</script>
<textarea id="TextArea" rows="10" cols="50"></textarea>
<script language="JavaScript">
<!--
var textarea = document.getElementById('TextArea');
TextAreaTab.Register(textarea); // 注册一下对象,就可以让这个对象现实Tab功能
//-->
</script>
相关文章推荐
- 自己写jQuery-ajax插件,XMLHttpRequest,支持回调,兼容ie、ff、360等浏览器
- 为何firefox不支持insertRow和insertCell。我如何能让firefox显示和ie显示的效果一样?iframe实现高度自适应,兼容FF、Opera、Safari
- 自定义浏览器滚动条的样式,打造属于你的滚动条风格——兼容IE和webkit(ff不支持)
- JQuery IFrame框架高度自适应(支持嵌套–兼容IE,ff,safafi,chrome)
- 转载一个完美兼容IE、FF、Opera的Ajax类支持get、post、自定义回调函数
- 得到textarea中光标中的位置,兼容IE,FF
- 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
- ahjesus 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome
- 自定义浏览器滚动条的样式,打造属于你的滚动条风格——兼容IE和webkit(ff不支持)
- 兼容于FF和IE的textArea字数限制
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- js复制兼容:ZeroClipboard复制到剪切板(支持IE、FF、Chrome)
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- JS代码获取当前日期时支持IE,不兼容FF和chrome,解决这个问题,我们需要把获取时间的getYear()函数换成getFullYear()
- 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
- 完美兼容IE、FF、Opera的Ajax类支持get、post、自定义回调函数
- js复制兼容:ZeroClipboard复制到剪切板(支持IE、FF、Chrome)
- JQuery自适应IFrame高度(支持嵌套--兼容IE,ff,safafi,chrome)
- javascript textarea光标定位方法(兼容IE和FF)