我想创建一个 SMS 网关,每次写入(或粘贴) 160 个字符时都会提醒用户。我需要存储一个变量 n,其中包含 160 个字符的消息部分。代码是这样的,只是n需要全局存储。还有比e更好的方法吗? G。将其存储到隐藏的表单字段中? 注意:在这种特殊情况下,假设一次粘贴少于 160 个字符是安全的。
window.onload = function() {
var n=1;
var t=document.getElementById('msg');
t.addEventListener('input', function() {
var l=t.value.length;
if(l>n*160){
n++;
alert('Message will be split into '+n+' parts');
}
}, false);
}
最佳答案
正如我的评论中提到的,这取决于您最终想要对 n
做什么。
如果您只想向用户显示一条消息,则可以在计算出该值后更新 DOM。
您当前的示例不允许用户在输入/粘贴文本后删除文本。更好的示例是无状态的,即不要将 n
与其自身进行比较,如下所示我的例子如下:
var t = document.getElementById('msg');
var splitSize = 10;
var n = 1;
t.addEventListener('input', function() {
var nextN = 1;
if (t.value.length > 0) {
nextN = Math.ceil(t.value.length / splitSize);
}
if (n !== nextN) {
n = nextN;
var label = document.getElementById('label');
if (n === 1) {
label.innerHTML = '';
} else {
label.innerHTML = 'The message will be split into ' + n + ' parts';
}
}
});
<p id="label"></p>
<textarea id="msg"></textarea>
关于javascript - JavaScript 中文本区域输入长度检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953781/