文本框更新事件

时间:2010-03-08 03:21:30

标签: javascript jquery html events

我有一个文本框,想要在更新时触发事件,无论是通过按键,从剪贴板粘贴还是其他任何可能的事件。

对keyup事件的绑定是否足够或是否有更好的方法?

3 个答案:

答案 0 :(得分:2)

你可以绑定多个这样的事件:

$('#textbox').bind('keyup change blur', function() {
    // stuff to do when any of these events fire
});

听起来change()本身应该对你有用。

Here is the API doc

答案 1 :(得分:1)

我在这段代码的文本字段中做了同样的事情:

$(document).ready(function(){

    $('#link').keyup(function(event){       

        if($(this).val().length > 30 && this.value != this.lastValue){
            if (this.timer) clearTimeout(this.timer);

            if(!$('#ajax-aguarde').length)
            {
                $('<p id="ajax-aguarde"></p>').appendTo($('#link-element'));
            }
            $('#ajax-aguarde').html('Wait, loading...');

            if($('#posts').length){
                $('#posts').remove();
                $('#p-ultimos').remove();
            }

            str = this.value;
            url = $('#ajaxurl').val();

            this.timer = setTimeout(function () {
                $.post(
                url,
                { link: str, format: 'json' }, 
                function(data){

                    if(data.error == 1){
                        $('#ajax-aguarde').html('Error...');
                    } else {
                        $('#ajax-aguarde').remove();
                    }

                    if(data.titulo.length){
                        $('#titulo').val(data.titulo);
                    }
                    if(data.descricao.length){
                        $('#descricao').val(data.descricao);
                    }

                    $('<p id="p-ultimos">Last posts:</p>').appendTo($('#link-element'));
                    $('<ul id="posts"></ul>').appendTo($('#link-element'));

                    $.each(data.posts, function(index, post) { 
                        $('<li id="post' + index + '"></li>').appendTo($('#posts'));
                        $('#post' + index).html(post.title);
                    });


                },
                "json"
                );
            },1000);

            this.lastValue = this.value;
        }

    });

    setTimeout(function() { $('#link').keyup(); },500);
});

我有setTimeout以确保一些未被触发的事件

答案 2 :(得分:0)

我认为这取决于你想听的频率我认为ketup会做到这一点但是改变可能不那么激烈并且得到同样的效果它只取决于你做什么