如何使keyup事件延迟处理

来源:互联网 发布:编程谜题 百度云 编辑:程序博客网 时间:2024/06/05 15:36

一般情况是每点击一个按键都会触发一次keyup事件,但是有些时候,这样并不能满足要求,需要的是输入完毕之后才执行某函数。(比如通过扫码枪扫描图书条形码进行图书信息的录入)

这里只能采取延时执行的方法来处理这种情况,具体代码如下:

<script type="text/javascript">        $(document).ready(function() {            $("#isbn").focus();     //让id为isbn的输入框获得焦点,然后直接扫码即可读取图书信息            var last;            $("#isbn").keyup(function(event){                $this=$(this);                last=event.timeStamp;                //利用event的timeStamp来标记时间,这样每次的keyup事件都会修改last的值,注意last必需为全局变量                setTimeout(function(){                    if(last-event.timeStamp==0){                      //如果时间差为0(也就是你停止输入1s之内都没有其它的keyup事件发生)则做你想要做的事                        var isbn = $this.val();                        $.ajax({                            url: ctxAdmin + '/library/book/getBookInfoByISBN?isbn='+isbn,                            type: "get",                            dataType: "json",                            success: function(data) {                                if(data['code'] == 1 && data['obj'] != undefined){                                    var obj=data['obj'];                                    $("#name").val(obj.title);                                    $("#subName").val(obj.subtitle);                                    $("#writer").val(obj.authors);                                    $("#publishHouse").val(obj.publisher);                                    $("#publishDate").val(obj.pubdate);                                    $("#translator").val(obj.translators);                                    $("#decoration").val(obj.binding);                                    $("#page").val(obj.pages);                                    $("#picture").val(obj.image);                                    CKEDITOR.instances['introduction'].setData(obj.summary);                                }                            }                        });                    }                },1000);            });        });    </script>
0 0
原创粉丝点击