概述:微博上有 自动提示 微博字符 的功能,在此有人一直用 “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); 传个参数就行。其余的根据这个规范来。
好了,到此结束。
分享到:
相关推荐
需要注意的是,虽然`maxlength`属性对于`textarea`是有效的,但在某些浏览器中可能会出现警告提示“undefined attribute name (maxlength)”,这是因为`maxlength`属性实际上是为`input`元素设计的,并不是`textarea...
当用户尝试提交表单时,`jquery.validate.js`会自动检查所有字段,如果textarea的长度超过200个字符,就会阻止表单提交并显示错误信息。 通过这种方式,我们可以灵活地控制用户在textarea中输入的文本长度,提高...
### 表单输入一定长度的字符后自动提交的知识点解析 在现代Web开发中,实现表单自动提交是一项实用的功能,特别是在需要用户输入特定长度文本的场景下。本篇文章将详细解析如何通过JavaScript来实现这一功能,并...
在JavaScript编程中,文本框(`textarea`或`input[type="text"]`)经常需要进行字符限制,以确保用户输入的数据符合特定的格式或者长度要求。"js文本超出字符自动删除"这一主题主要关注如何实现当用户在文本框中输入...
jQuery文本框字符限制插件正是解决这一问题的有效方案,它允许开发者轻松地设定最大输入字符长度,并实时反馈用户输入状态。 该插件的核心功能包括: 1. **最大输入字符长度限制**:开发者可以通过设置参数`...
本文将详细介绍一个基于jQuery的文本框字符限制插件,该插件能够有效地控制文本框的最大输入字符长度,并提供友好的提示信息。 1. 插件功能概述: - 最大输入字符限制:用户可以自定义文本框的最大输入字符数,...
为了实现自动伸缩,我们需要监听字符串数量或每个字符串长度的变化,并相应地更新内容大小。例如,如果是一个动态加载字符串列表的界面,每次添加新的字符串时,都需要重新计算内容的总高度。这可以通过遍历所有字符...
当用户在`textarea`中输入时,剩余字符数会实时更新,且一旦超过50个字符(25个汉字),输入将会被自动截断。 需要注意的是,这个基础实现并不完美,例如,它没有考虑用户复制粘贴大量文本的情况,也没有处理删除...
在Flex3中,自动提示功能是为用户提供快速输入建议的一种交互方式,极大地提升了用户体验。这种功能通常用于搜索框、表单字段等,以帮助用户更有效地输入数据。 在Flex3中实现自动提示,主要是通过`AutoComplete`类...
在 textarea 中添加一个实时显示输入字符数的功能,通常用来限制用户输入的长度,例如微博的 140 字限制。 #### 2.2 实现原理 - **监听输入事件**:与自动下拉类似,同样监听 `input` 事件。 - **更新计数器**:...
在这个例子中,当用户尝试输入超过100个字符时,超出部分的字符会被自动删除,并弹出警告提示。`this.value.length`用于获取当前文本框的字符数,`slice(0, maxLength)`则用于截取不超过最大长度的文本。 为了提高...
然后,我们编写JavaScript代码,使用jQuery来监听textarea的keyup事件,每当用户在textarea中输入或删除字符时,都会触发这个事件。我们将在事件处理函数中计算当前的字符数,并更新剩余字数的显示: ```javascript...
本文将详细介绍如何使用jQuery实现一个字符输入个数的判断功能,并在超过指定长度时自动进行截取处理。具体而言,该功能会根据不同的字符类型来计算长度:对于数字和英文字母,每个字符计为1个单位;而对于中文字符...
例如,示例代码中的`<textarea>`包含了“请将意见输入此区域”作为默认提示。 `<textarea>`标签支持一些重要的属性: 1. `name`: 这个属性是必需的,用于标识文本框,并在表单提交时将数据发送到服务器。在示例中...
这个插件允许开发者自定义最大输入字符长度、字符截取速度以及提示信息的样式。 该插件的核心功能包括: 1. **最大输入字符长度限制**:允许开发者设定一个最大字符数,当用户输入的字符达到此限制时,将阻止进一步...
在这个例子中,我们设置了`maxChars`变量为100,当用户输入的字符数超过100时,超出的字符将被自动删除。这提供了一种实时的反馈,确保输入始终不超过设定的限制。 此外,我们还可以添加额外的视觉提示,比如在旁边...
在网页开发中,有时我们需要对用户在`<textarea>`元素中的输入进行限制,例如限制最多输入的字符数。本文将详细介绍如何实现一个兼容iOS和安卓设备的`<textarea>`输入字数限制实例。 首先,我们要明确`<textarea>`...
现在,当用户在`Textarea`中输入字符时,每输入一个字符,`limitCharacters`函数就会被调用,如果超过了最大长度,超出的部分将被自动删除,同时下方的计数器会实时更新。 这个简单的解决方案在许多实际应用中都...
- 计算当前输入的字符长度,考虑到多字节字符(如中文),这里使用了一个技巧,将非ASCII字符替换为'oo'后再计算长度。 - 计算剩余可输入字符数(`llen`)。 - 如果输入长度超过最大长度,遍历输入值的每个字符,...
7. **auto-focus** (Boolean): 自动聚焦功能,设置为`true`时,打开页面会自动聚焦并弹出键盘,但一个页面中只能有一个`textarea`或`input`元素设置此属性。 8. **focus** (Boolean): 是否获取焦点,与`auto-focus`...