与setTimeout相关的特定textarea行为

时间:2013-12-10 21:45:23

标签: javascript jquery html google-chrome settimeout

我要做的是给用户一个textarea(启用输入)和允许他写最多10个字符。实际上, textarea应该允许更多字符,不仅仅是10,其他字符也会相应地表现出来:

只要用户在11ºchar,就会有一个setTimeout。所以,我在那里写了一些东西,我得到了10号字符(文本允许的最大数量),并希望在给定时间之后删除其他字符。

somethinge = 10 chars.
anotherwor = 10 chars.

input: somethingeiefjaiehf
after 5 seconds:
input: somethinge

input: anotherwordtotestthisandseeifitworks
after 5 seconds:
input: anotherwor

2º要完成此我基本上将clearTimeout附加到全局变量:

//Function "countChar(val)" is activated with the keydown event
    var timer_to_op = null;
    function countChar(val) {
            var len = val.value.length; //lenght of input in textarea
            clearTimeout(timer_to_op);
    //...
    //irrelevant code
    //...
                      }else if(len > 140){
                        $("#status_toOp_num").text(145-len);
                        timer_to_op = setTimeout(function(){
                            val.value = val.value.substring(0, 140);
                        },5000);

    }

实际上,出于某种原因,它不起作用。 如果用户正在键入AND,他会在5秒钟内输入另一个字符,然后我希望计时器重新启动。

input: anotherwor  
input: anotherword (+d) timer = 1...2...3... 
input: anotherworde (+e) timer = 1...2...  
input: anotherwordef (+f) timer = 1...2...3...4...5!  
input: anotherwor     the user took more than 5 seconds so it erased the excedent.

希望我明白了。关于这个的任何想法?非常感谢你! (我没有放任何HTML,它只是<textarea onclick="countChar(this)">

1 个答案:

答案 0 :(得分:0)

我并没有真正尝试理解你在代码中做了什么,似乎没有那么复杂。

检查这个小提琴。 http://jsfiddle.net/Q2h5f/

HTML

<textarea id="limitText">0123456789</textarea>

的Javascript

var tarea = document.getElementById("limitText");
tarea.onkeypress = checkInputText;
var timer = null;

function checkInputText(e) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(limitTextLength, 5000);
}

function limitTextLength() {
    var tareaVal = document.getElementById("limitText").value.toString();
    if (tareaVal.length > 10) {
        tarea.value = tareaVal.slice(0, 10);
    }
}

应解决您的问题。