等待一个变量来改变值
问题描述:
我有一个文本框,并且每次用户按下一个键时,我计算该字段的新长度以查看仍有多少个字符可用。 基于这个数字,我:等待一个变量来改变值
- 检查,如果“发送”按钮应该启用或不
- 检查,如果显示的长度应为红色或黑色(点菜Twitter)上的计数器
但现在我有一个问题;每个的keydown事件,我做的:
remaining = 100 - count;
if (remaining > 9)
{
//blue counter; send is activated
//"if counter.class == red then counter.class = blue..."
//"send.off('click'); send.on('click', sendmessage)..."
}
else if ((remaining <= 9) && (remaining >= 0))
{
//red counter; send is activated
}
else //remaining <0
{
//red counter; send is deactivated
}
每次用户按下一个键后,3个集团的一个执行......是不是有办法执行集团只有当变量发生变化“区域”(]∞, 9[
; [9,0]
; ]0; -∞[
)?
答
毫无疑问,这可能是更优雅的完成,但答案很简单,只是要记住长度的前值:
var prevCount = 10;
function checkLength() {
var count = // your logic to get current count here
if (count > 9 && prevCount <=9) {
// count has changed to > 9
} else if (count <=9 && count >= 0 && (prevCount > 9 || prevCount < 0) {
// count has changed to <=9
} else if (count < 0 && prevCount >= 0) {
// count has changed to < 0
}
prevCount = count;
}
初始化prevCount
任何值有意义时,屏幕加载...
(PS计数怎么能小于零?)
更新:既然你已经确认你正在使用jQuery你可以做这样的事情(假设“黑”与“红”是在样式表类有适当的颜色和格式设置):
$(document).ready(function() {
var limit = 100,
$rem = $("#remaining").addClass("black"),
$send = $("input");
$("textarea").on("keydown keyup", function() {
var len = $(this).val().length,
remaining = limit - len;
$rem.text(remaining);
$send.prop("disabled", len === 0 || remaining < 0);
if (remaining <=9 && $rem.hasClass("black")
|| remaining > 9 && $rem.hasClass("red"))
$rem.toggleClass("black red");
}).keydown();
});
禁用发送按钮,如果有任何文字或太多文字;仅在必要时将班级从黑色更改为红色。 (您也可以使黑的默认,只是打开和关闭“红色”类)。
计数怎么能小于零? – nnnnnn 2012-02-29 09:39:38
我的不好,它实际上是剩余的字符数(再次,像140的限制一样的twitter) – Manu 2012-02-29 09:41:27
你使用jQuery吗? (我注意到'send.off(...)') – nnnnnn 2012-02-29 09:51:15