Textarea对.change()没有反应?

时间:2012-11-22 18:26:36

标签: javascript asp.net jquery-ui

$(document).ready(function(){
    var keyUpTime = 0;                  
    var t = 0;
    var executeAfterOneSecond = false;
    $('#source').keyup(function(){
        if(executeAfterOneSecond == false){
            executeAfterOneSecond = true;
            t = setTimeout(function(){
                executeAfterOneSecond = false;
                sendValue($('#source').val());                          
                }, 600);
            }                                   
        keyUpTime = $.now();
        setTimeout(function(){
            if($.now() - keyUpTime >= 200) {
                clearTimeout(t);
                executeAfterOneSecond = false;
                sendValue($('#source').val());          
                }           
            },200);
    });
});

<textarea id="source" name="text" wrap="soft" tabindex="0" dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" style="box-sizing: border-box; overflow-y: hidden; overflow-x: auto; padding-right: 20px; " class="oggy-textarea">
                                </textarea>

好吧,我希望我的代码适用于change(); [$('#source')。change(function(){---});],不在keyup()上,但它没有。我尝试使用bind()但没有尝试。怎么了?

1 个答案:

答案 0 :(得分:1)

更改事件仅在input控件丢失focus时发生 - 因此它不会触发。

请参阅备注:http://www.w3schools.com/jquery/event_change.asp

您必须使用keyUpkeyPresskeyDown

你也可以真正清理你的方法。像下面这样的东西可能会更稳定。

这将在最后一次密钥后1秒后调用sendValue()。把你的22行降到6:)

以下是jsFiddle

下面的代码示例
   $(document).ready(function(){

      $("#source").keyup(function(){
         clearTimeout(this.timer);
         this.timer = setTimeout(function() {sendValue($("#source").val());}, 1000);
      });

   });