`
全冠清
  • 浏览: 52605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jquery获取(设置)文本框(块)内光标位置插件

阅读更多
/**
 * @author 全冠清
 */
$.fn.extend({
	position: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;
			}
	}
})

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
		<title>测试</title>
	</head>
	<script language="JavaScript" type="text/javascript" src="jquery-1.3.1.min.js"></script>
	<script language="JavaScript" type="text/javascript" src="jquery-position.js"></script>
	<script language="JavaScript" type="text/javascript">
		$(document).ready(function(){
			$('input:eq(0)').click(function(){
				alert($(this).position());
			})
			$('input:eq(1)').click(function(){
				$(this).position(4);
			})
		})
	</script>
	<body>
		<input type="text"  value="123456789"/>
		<input type="text"  value="123456789"/>
	</body>
</html>

全冠清 写道
    $.fn.selectRange = function(start, end){
        return this.each(function(){
            if (this.setSelectionRange) {
                this.focus();
                this.setSelectionRange(start, end);
            }
            else 
                if (this.createTextRange) {
                    var range = this.createTextRange();
                    range.collapse(true);
                    range.moveEnd('character', end);
                    range.moveStart('character', start);
                    range.select();
                }
        });
    };

分享到:
评论
9 楼 javaEEdevelop 2012-08-16  
Ie中textarea不支持啊
8 楼 cyij 2010-01-12  
<p>非常感谢楼主提供的插件,相当好用。</p>
<p>这次正好用在项目里了,由于项目一些特殊需求,进行了一点点小的改动:</p>
<p> </p>
<pre name="code" class="js">/**
* @author 全冠清
*/
$.fn.extend({
position:function( pos, text ){
var elem = this[0];
if (elem&amp;&amp;(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( pos === undefined ){
rng.moveStart("character",-event.srcElement.value.length);
return  rng.text.length;
}else if(typeof pos === "number" ){
var index=this.position();
index&gt;pos?( rng.moveEnd("character",pos-index)):(rng.moveStart("character",pos-index))
rng.select();
if( text === undefined ) {
return pos;
}
}
}else{
if( pos === undefined ){
return elem.selectionStart;
}else if(typeof pos === "number" ){
elem.selectionEnd = pos;
elem.selectionStart = pos;
if( text === undefined ) {
return pos;
}
}
}
if( text !== undefined ) {
var len = elem.value.length;
if(len&lt;1 || pos&lt;0) {
pos = 0;
} else if( pos&gt;len ) {
pos = len;
}
var text1 = elem.value.substr(0,pos);
var text2 = elem.value.substr(pos);
pos += text.length;
elem.value = text1+text+text2;
return this.position(pos);
}
}else{
var index = 0;
if( typeof pos === "number") {
index += pos;
}
return index;
}
}
})
</pre>
 
<p> </p>
<p>改动点:</p>
<p>   1:返回结果都统一返回位置信息,如果浏览器不兼容,返回0;</p>
<p>   2:增加一个参数,以便在指定位置插入字符串。</p>
7 楼 swain 2009-09-25  
刚测试了一下 都可以用 不错的插件 谢谢
6 楼 swain 2009-09-25  
不知道浏览器兼容性方面如何
5 楼 javaAlpha 2009-09-25  
不错啊 搜藏了
4 楼 yoyozizou 2009-08-04  
quaff 写道
支持一个,不知道什么场景下会用到?

对输入进行一些控制时,如输入金额小数点时判断插入位置是否合法
3 楼 quaff 2009-08-04  
支持一个,不知道什么场景下会用到?
2 楼 全冠清 2009-08-03  
    $.fn.selectRange = function(start, end){
        return this.each(function(){
            if (this.setSelectionRange) {
                this.focus();
                this.setSelectionRange(start, end);
            }
            else 
                if (this.createTextRange) {
                    var range = this.createTextRange();
                    range.collapse(true);
                    range.moveEnd('character', end);
                    range.moveStart('character', start);
                    range.select();
                }
        });
    };
1 楼 lw223 2009-08-03  
js 看不懂

相关推荐

    jQuery获取和设置文本框光标

    "jQuery获取和设置文本框光标"这个主题是关于如何利用jQuery来控制HTML输入元素(如文本框)中的光标位置以及选定文本的操作。这在创建富文本编辑器、自定义表单组件或实现某些特殊交互时非常有用。 首先,让我们...

    jQuery插件 文本框、文本域 光标处插入代码

    本主题聚焦于一个特定的jQuery插件,该插件允许开发者在文本框(`&lt;input type="text"&gt;`)和文本域(`&lt;textarea&gt;`)中于光标位置插入代码或内容。这对于编辑器、代码编辑器或任何需要动态插入文本的场景来说是非常...

    jquery 确定光标位置

    在jQuery中,没有直接的方法来获取或设置光标位置,但我们可以利用JavaScript的原生方法。以下是一些关键的JavaScript函数,用于处理光标位置: 1. **获取光标位置**: 要获取光标在文本框中的位置,可以使用`...

    Jquery内容插入光标处插件

    1. **获取光标位置**:首先,插件需要获取当前光标在文本框或文本区域内的位置。这可以通过JavaScript的`selection`对象或者`range`对象来实现。在jQuery中,可以结合`$.fn.extend`扩展jQuery的功能,创建一个新的...

    一个jQuery文本框、文本域的长度进行验证的函数库.

    ### 关于jQuery文本框与文本域长度验证的函数库 #### 概述 在Web开发过程中,表单验证是确保用户输入数据准确性的重要步骤之一。虽然jQuery已经提供了一个强大的`validate`插件来帮助开发者实现表单验证,但是该...

    jquery+js实现文本框部分内容被选中(兼容各种浏览器)

    `setSelectionRange`是现代浏览器支持的一个方法,允许我们在输入框中设置光标位置和选择范围。 对于不支持`setSelectionRange`的浏览器,如较旧版本的Internet Explorer,我们使用`select`方法来选中整个文本。`...

    jQuery文本框输入表情符号代码.zip

    为了支持Unicode字符,开发者可能还会利用`document.selection`或`window.getSelection()`来获取和设置用户的输入焦点位置。 此外,“jquery特效”和“jquery插件”标签暗示了可能存在的扩展功能。jQuery库有许多...

    文本框插入表情Jquery插件

    标题中的“文本框插入表情Jquery插件”指的是在网页中的输入框(通常是文本框或者文本区域)中实现插入和显示表情的功能。这种功能常见于社交媒体、论坛和聊天应用,可以增强用户交互体验,使表达情感更为丰富。...

    基于jQuery实现的设置文本区域的光标位置

    文章通过三种方法实现获取和设置文本框光标位置,下面将详细解释这些方法的工作原理和使用方法。 首先,需要了解在HTML中,文本输入框(input)和文本区域(textarea)是允许用户输入文本的两种表单元素。在...

    jQuery 在光标定位的地方插入文字的插件

    不同的浏览器提供了不同的方法来获取和设置光标位置,本插件兼容了 Internet Explorer 和 Firefox(基于标准的实现)。 - **在 Internet Explorer 中**,使用 `document.selection.createRange()` 方法来获取当前...

    JQuery新浪1630个表情插件.zip

    5. 处理用户交互:监听用户在表情面板上的操作,当选择某个表情时,将其插入到当前光标位置。 在实际应用中,开发者可以根据需求对插件进行定制,比如调整表情面板的样式、设置表情的快捷码、增加自定义表情等。...

    jQuery往textarea中光标所在位置插入文本的方法

    本文通过判断浏览器类型和版本,使用不同的方法获取和设置光标位置。 5. 文本操作:在textarea中插入文本时,需要对现有文本进行截取和拼接操作。这需要使用JavaScript字符串的相关方法,如substring()、length等。...

    jquery实现在光标位置插入内容的方法

    在本篇文档中,我们主要讨论了使用jQuery实现光标位置插入内容的方法,该方法涉及到了jQuery功能的扩展技巧,对于需要在Web页面上实现这一功能的开发者来说具有一定的参考价值。 首先,文中提到了jQuery本身的一些...

    JQuery在光标位置插入内容的实现代码

    如果存在这些属性,它会获取光标位置,插入内容,然后重新设置光标位置。最后,如果浏览器既不支持`document.selection`也不支持`selectionStart/selectionEnd`,则简单地在输入框末尾添加内容。 使用这个插件的...

    jQuery code

    这可能是一个示例,展示了如何使用jQuery来监控文本框(input元素)的焦点状态,即当用户将光标放入文本框(获得焦点)或移出文本框(失去焦点)时,如何改变其外观或行为。在网页设计中,这种功能常见于表单元素,...

    skylark-jquery-caret:jQuery插入符的一个版本,可移植到在skylark.js上运行

    `skylark-jquery-caret`插件正是为了解决这个问题而诞生的,它提供了丰富的API,使开发者能够方便地获取和设置文本框的光标位置,甚至可以进行更复杂的操作,如移动插入符、插入文本等。 Skylark.js是一个轻量级的...

    jQuery表情图片选择器代码.rar

    这个插件与jQuery协作,负责管理和渲染表情列表,以及将选中的表情插入到当前光标位置。 在【压缩包子文件的文件名称列表】中,"biaoqing"可能是表情图片或者数据文件的目录,包含了所有可用的表情图像。这些图片...

    JS在可编辑的div中的光标位置插入内容的方法

    - 使用原生JS获取光标位置时,需要用到window.getSelection()方法来获取当前选中的文本范围(Range对象),然后通过range.startOffset属性可以得知光标位置在选中的文本范围中的偏移量。 - 使用jQuery时,通常需要...

    让WYMeditor编辑器支持插入文本框,复选框等

    这通常涉及绑定一个点击事件处理器,该处理器调用我们的插件函数,将正确的HTML插入到编辑器的光标位置。 6. **测试和调试**:完成以上步骤后,需要在实际环境中测试新功能,确保它在各种浏览器和设备上都能正常...

    将鼠标焦点定位到文本框最后(代码分享)

    `setSelection` 方法根据浏览器类型(主要是IE8及以下与非IE浏览器)选择不同的实现方式来设置光标位置。`focusEnd` 方法则直接将光标移动到文本框的末尾,如果文本框有值,它会计算出当前文本的长度并调用 `...

Global site tag (gtag.js) - Google Analytics