这是HTML:
<form>
<textarea id="input1"></textarea>
<textarea id="input2"></textarea>
<span></span>
</form>
js:
$("#input2").keyup{
var a = document.getElementById("input1").length;
var b = document.getElementById("input2").length;
var c=a+b;
$("span").html(c);
}
每次'c'达到140,我需要将它添加到'b', 我试着这样做:
while(c%140 == 0){
c=c+b;
}
在第140个keyup,是的,它添加了,但是下一个keyup(第141个),依此类推'c'回到它的值由notihng添加。如何正确地做到这一点?
感谢。
答案 0 :(得分:2)
我不能确定我是否正确地阅读了这个问题,但如果my jsfiddle of your code是近似的,那么解决方案可能就像摆脱var
前面的c
一样简单。添加a+b
时{1}}。如果您希望c
具有持久值,则需要将其范围置于keyup
事件处理程序之外。
来自小提琴:
$(function() {
var c = 0;
$("#input2").keyup( function() {
var a = $("#input1").val().length;
var b = $("#input2").val().length;
c=a+b;
if(c%140 == 0){
c=c+b;
}
$("span").html(b);
});
});
请注意,这是一个if
,而不是while
。如果它应该是一个while循环,那么这很容易做出改变。
我想我知道这里发生了什么。您希望跟踪多页SMS消息的总字符数。 updated jsfiddle可以回答你不会问的问题。
这是新代码:
$(function() {
$("#input2, #input1").keyup( function() {
var a = $("#input1").val().length;
var b = $("#input2").val().length;
c=a+b;
c+=Math.floor(c/140)*b;
$("span").html(c);
});
});
现在,这当然假设input1保存您的实际消息,而input2保存一些需要在每个页面上显示的文本。如果是相反的方式,或者此代码还有其他用途,请告诉我。