页面加载时字符数不计算在内
Characters count didn't count when page loading
我正在为文本区域创建字符计数,文本区域中的限制文本为 140 个字符。我已经创建了使用javascript来计算文本区域中的字符的函数。在文本区域下方,我显示了剩余的字符。当我在文本区域中按键时,字符将被计数。加载到该页面时,该页面中有一些值,但剩余的字符不计算在内。当我将鼠标放在该文本区域中并按键时,它将计数。我希望在页面加载时根据文本区域中的值计算剩余的字符数。
这是我的代码
1. 脚本
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
} else {
limitCount.value = limitNum - limitField.value.length;
}
}
2.HTML & PHP
$tweet = "Hello world.";
<form name='myform'>
<textarea style='margin-bottom:10px; width: 750px;' class='text_tweet'
name='limitedtextarea' rows='5' maxlength='140'
onKeyDown='limitText(this.form.limitedtextarea,this.form.countdown,140);'
onKeyUp='limitText(this.form.limitedtextarea,this.form.countdown,140);'>".$tweet."
</textarea>
<br><font size='1'>(Maximum characters: 140)<br>
You have <input readonly type='text' name='countdown' size='3' value='140'> characters left.</font>
</form>
谁能帮我解决这个问题?
提前谢谢。
如果您必须在页面加载时检查textarea length
并以countdown
显示它,最好create one function and call it on body load
:
JavaScript:
function bodyOnload(limitNum){
var tweet = document.forms['myform'].elements['limitedtextarea'].value;
document.forms['myform'].elements['countdown'].value = limitNum - tweet.length;
}
.HTML:
<body onload="bodyOnload(140)">
<form name='myform'>
<textarea style='margin-bottom:10px; width: 750px;' class='text_tweet'
name='limitedtextarea' rows='5' maxlength='140'
onKeyDown='limitText(this.form.limitedtextarea,this.form.countdown,140);'
onKeyUp='limitText(this.form.limitedtextarea,this.form.countdown,140);'>Hello world.
</textarea>
<br><font size='1'>(Maximum characters: 140)<br>
You have <input readonly type='text' name='countdown' size='3' value='140'> characters left.</font>
</form>
</body>
演示小提琴
您可以在加载时调用该函数,使用与 keydown 相同的参数。
window.onload = function () {
var frm = document.getElementsByName('myform')[0];
limitText(frm.limitedtextarea,frm.countdown , frm.countdown.value);
}
小提琴
但我建议您摆脱内联属性并自己注册事件。
window.onload = function () {
var limitcount = document.getElementsByName('countdown')[0],
limitNum = 140;
//Register the listener
document.getElementsByName('limitedtextarea')[0].addEventListener('keydown', function () {
if (this.value.length > limitNum) {
this.value = this.value.substring(0, limitNum);
} else {
limitcount.value = limitNum - this.value.length;
}
});
//on load trigger the event
dispatchEvent(document.getElementsByName('limitedtextarea')[0], "keydown");
}
function dispatchEvent(element, eventName) {
if ("createEvent" in document) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent(eventName, false, true);
element.dispatchEvent(evt);
} else element.fireEvent("on" + eventName);
}
小提琴
如果我理解正确,这就是你需要的。
每次松开键时,此代码都会更新<p>
内的文本;
此外,它设置了一个起始值,因此当页面加载时,它已经告诉了限制;
<textarea id="txt" onkeyup="count(140,''txt'',''msg'');"></textarea>
<p id="msg">140</p>
<script>
function count(c,txtid,msgid){
document.getElementById(msgid).innerText = c - document.getElementById(txtid).value.length;
}
</script>
请注意,字符串参数是转义的,但您只需删除斜杠即可解决。
相关文章:
- 如何使用javascript计算文本区域中键入的字符数
- 有没有一种方法可以让javascript不计算特定的字符
- 计算文本区域中的字符数
- 计算 jQuery 中字符串中的特殊字符
- 计算文本块中的字符数,并将其拆分为两列
- 计算JavaScript中句子(数组)中字符(数组)的出现次数
- Jquery计算元素中的字符,并为太短的字符添加填充
- 计算剩余字符以存储在 mysql 中
- 我如何计算各种字符的终端列宽
- 想要在加载窗口上计算字符数
- JavaScript三元运算符,用于计算字符串中的字符数
- 如何计算对话框中文本区域的字符数
- 页面加载时字符数不计算在内
- 计算字符串中的大写和小写字符
- 在键按下事件上计算文本字段中的字符数
- 计算 ReactJs 中 TextArea 中的字符数
- 如何使用Javascript计算字符数
- 我怎样才能使它计算字符而不是单词
- 在jQuery中使用.keyup计算字符数的简单方法
- 什么是最好的方法来计算字符数在html dom节点(在文档节点使用javascript范围库)