`

自动提示 TextArea 中字符的长度。

阅读更多
  概述:微博上有 自动提示 微博字符 的功能,在此有人一直用 “onpropertychange” 事件,但是这个事件在 火狐下是不支持的。所以为弥补这种浏览器不兼容的缺陷,我写了一个 demo供大家参考。

  分析:阅读相关W3c资料,想在火狐下兼容 类似 IE 中“onpropertychange”的事件,必须添加 一个名叫 “input”的事件监听器 于 你的 textArea中。

  废话不多说了,也许说的都是废话。

  实践:

公共页面:
<style type="text/css">
    .msblogError,.msblogMsg{font-family:Georgia,Tahoma,Arial;font-size:26px;font-weight:400;font-style:normal;line-height:33px;word-spacing:0;vertical-align:middle;}
    .msblogError{color:#E56C0A;}
    .msblogMsg{color:#999999;}
</style>

<p><form>
       <textarea id="msgTxt" name="Content" autocomplete="off" tabindex="1" rows="7"  class="w500"></textarea>
</form></p>

<p>
   <span id="msgTxtCountTxt">还能输入 <em class="msblogMsg">140</em> 字</span>
    <button type="button" id="btnFabu" title="快捷键 Ctrl+Enter" tabindex="2">发布</button></p>


     (1)JS方式:
<script type="text/javascript">
	window.onload=function()
	{
		if(navigator.userAgent.indexOf("MSIE")>0)    //ie浏览器
		{
document.getElementById('msgText').attachEvent("onpropertychange",TxtMaxlength);
		}else
		{
document.getElementById('msgText').addEventListener("input",TxtMaxlength,false);
		}
	};
	function TxtMaxlength(){
		MaxCount=140;
 var $=function(id){return document.getElementById(id);}
		var ObjCou=$('msgTxt').value.length;
		$($("MsgTxt").id+"CountTxt").getElementsByTagName("em")[0].innerHtml=MaxCount-ObjCou;
		if (ObjCou > MaxCount){
            $("msgTxtCountTxt").innerHtml="超出<em class='msblogError'>"+ (ObjCou-MaxCount) +"</em>字";
		}else{
            $("msgTxtCountTxt").innerHtml="还能输入<em class='msblogMsg'>"+ (MaxCount-ObjCou) +"</em>字";
        }
	}
</script>


2:Jquery方式,建议大家用jquery方式,速度效率上比 js 方式都好。
<script type="text/javascript">
	$(function () {
        addCheck('msgTxt');
	});
    function addCheck(id){
        $('#'+id).bind('propertychange input',TxtMaxlength);
    }
	function TxtMaxlength(){
		MaxCount=140;
		var ObjCou=$(this).attr("value").length;
		$("#"+this.id+"CountTxt em").html(MaxCount-ObjCou);
		if (ObjCou > MaxCount){
            $("#"+this.id+"CountTxt").html("超出<em class='msblogError'>"+ (ObjCou-MaxCount) +"</em>字");
		}else{
            $("#"+this.id+"CountTxt").html("还能输入<em class='msblogMsg'>"+ (MaxCount-ObjCou) +"</em>字");
        }
	}
</script>


注意:TextArea的ID与消息的提示的ID 要关联起来。
【<textarea id="msgTxt" 】
【<span id="msgTxtCountTxt">还能输入 <em class="msblogMsg">140</em> 字</span>】
童鞋们请看, msgTxt  与 msgTxtCountTxt 是有关联的哦。这样做的好处是:即使页面上有多个 不同元素 的 textarea ,你只需要给:addCheck(msgTxt); 传个参数就行。其余的根据这个规范来。

好了,到此结束。
1
2
分享到:
评论
1 楼 a3063291 2011-03-08  
以前我也遇见这样的问题,一直没有解决了,真谢谢你了
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    textarea长度控制

    需要注意的是,虽然`maxlength`属性对于`textarea`是有效的,但在某些浏览器中可能会出现警告提示“undefined attribute name (maxlength)”,这是因为`maxlength`属性实际上是为`input`元素设计的,并不是`textarea...

    jquery对textarea的长度进行验证

    当用户尝试提交表单时,`jquery.validate.js`会自动检查所有字段,如果textarea的长度超过200个字符,就会阻止表单提交并显示错误信息。 通过这种方式,我们可以灵活地控制用户在textarea中输入的文本长度,提高...

    表单输入一定长度的字符然后自动提交

    ### 表单输入一定长度的字符后自动提交的知识点解析 在现代Web开发中,实现表单自动提交是一项实用的功能,特别是在需要用户输入特定长度文本的场景下。本篇文章将详细解析如何通过JavaScript来实现这一功能,并...

    js文本超出字符自动删除

    在JavaScript编程中,文本框(`textarea`或`input[type="text"]`)经常需要进行字符限制,以确保用户输入的数据符合特定的格式或者长度要求。"js文本超出字符自动删除"这一主题主要关注如何实现当用户在文本框中输入...

    jQuery文本框字符限制插件-TextArea Counter.docx

    jQuery文本框字符限制插件正是解决这一问题的有效方案,它允许开发者轻松地设定最大输入字符长度,并实时反馈用户输入状态。 该插件的核心功能包括: 1. **最大输入字符长度限制**:开发者可以通过设置参数`...

    jQuery文本框字符限制插件-TextArea Counter.pdf

    本文将详细介绍一个基于jQuery的文本框字符限制插件,该插件能够有效地控制文本框的最大输入字符长度,并提供友好的提示信息。 1. 插件功能概述: - 最大输入字符限制:用户可以自定义文本框的最大输入字符数,...

    unity3D GUI 滚动条自动伸缩添加字符串

    为了实现自动伸缩,我们需要监听字符串数量或每个字符串长度的变化,并相应地更新内容大小。例如,如果是一个动态加载字符串列表的界面,每次添加新的字符串时,都需要重新计算内容的总高度。这可以通过遍历所有字符...

    js 限制表单输入长度 汉字为两个字符

    当用户在`textarea`中输入时,剩余字符数会实时更新,且一旦超过50个字符(25个汉字),输入将会被自动截断。 需要注意的是,这个基础实现并不完美,例如,它没有考虑用户复制粘贴大量文本的情况,也没有处理删除...

    flex3 自动提示控件

    在Flex3中,自动提示功能是为用户提供快速输入建议的一种交互方式,极大地提升了用户体验。这种功能通常用于搜索框、表单字段等,以帮助用户更有效地输入数据。 在Flex3中实现自动提示,主要是通过`AutoComplete`类...

    js textarea自动下拉(带计数)图

    在 textarea 中添加一个实时显示输入字符数的功能,通常用来限制用户输入的长度,例如微博的 140 字限制。 #### 2.2 实现原理 - **监听输入事件**:与自动下拉类似,同样监听 `input` 事件。 - **更新计数器**:...

    使用JavaScript限制TextArea多行文本域的可输入字数

    在这个例子中,当用户尝试输入超过100个字符时,超出部分的字符会被自动删除,并弹出警告提示。`this.value.length`用于获取当前文本框的字符数,`slice(0, maxLength)`则用于截取不超过最大长度的文本。 为了提高...

    jQuery textarea文本框输入文字字数限制提示特效代码

    然后,我们编写JavaScript代码,使用jQuery来监听textarea的keyup事件,每当用户在textarea中输入或删除字符时,都会触发这个事件。我们将在事件处理函数中计算当前的字符数,并更新剩余字数的显示: ```javascript...

    jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)

    本文将详细介绍如何使用jQuery实现一个字符输入个数的判断功能,并在超过指定长度时自动进行截取处理。具体而言,该功能会根据不同的字符类型来计算长度:对于数字和英文字母,每个字符计为1个单位;而对于中文字符...

    HTML中的文本框textarea标签

    例如,示例代码中的`&lt;textarea&gt;`包含了“请将意见输入此区域”作为默认提示。 `&lt;textarea&gt;`标签支持一些重要的属性: 1. `name`: 这个属性是必需的,用于标识文本框,并在表单提交时将数据发送到服务器。在示例中...

    ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter

    这个插件允许开发者自定义最大输入字符长度、字符截取速度以及提示信息的样式。 该插件的核心功能包括: 1. **最大输入字符长度限制**:允许开发者设定一个最大字符数,当用户输入的字符达到此限制时,将阻止进一步...

    限制多行文本域输入的字符个数

    在这个例子中,我们设置了`maxChars`变量为100,当用户输入的字符数超过100时,超出的字符将被自动删除。这提供了一种实时的反馈,确保输入始终不超过设定的限制。 此外,我们还可以添加额外的视觉提示,比如在旁边...

    Textarea输入字数限制实例(兼容iOS&安卓)

    在网页开发中,有时我们需要对用户在`&lt;textarea&gt;`元素中的输入进行限制,例如限制最多输入的字符数。本文将详细介绍如何实现一个兼容iOS和安卓设备的`&lt;textarea&gt;`输入字数限制实例。 首先,我们要明确`&lt;textarea&gt;`...

    签名框(Textarea)限制文字数量并适时提示

    现在,当用户在`Textarea`中输入字符时,每输入一个字符,`limitCharacters`函数就会被调用,如果超过了最大长度,超出的部分将被自动删除,同时下方的计数器会实时更新。 这个简单的解决方案在许多实际应用中都...

    javascript兼容firefox的文本输入长度提示

    - 计算当前输入的字符长度,考虑到多字节字符(如中文),这里使用了一个技巧,将非ASCII字符替换为'oo'后再计算长度。 - 计算剩余可输入字符数(`llen`)。 - 如果输入长度超过最大长度,遍历输入值的每个字符,...

    微信小程序 textarea 组件详解及简单实例

    7. **auto-focus** (Boolean): 自动聚焦功能,设置为`true`时,打开页面会自动聚焦并弹出键盘,但一个页面中只能有一个`textarea`或`input`元素设置此属性。 8. **focus** (Boolean): 是否获取焦点,与`auto-focus`...

Global site tag (gtag.js) - Google Analytics