如何在键入第一个字母后立即触发jquery keyup事件?

时间:2016-07-11 17:57:42

标签: javascript jquery pagination

我正在尝试为我正在处理的项目构建搜索工具。基本上,我正在筛选页面上的项目列表,然后显示匹配的项目。我遇到的问题是我正在使用分页,每当键入第一个字母时,分页事件都不会触发,直到您键入第二个字母。当第一个字母输入到输入中时,底部context.paginate()和context.createPages(4)中的函数不会触发。除此之外它很有效,它只是一种麻烦,我无法弄清楚为什么这些特定事件不会立即解雇。包括展开在内的所有东西都立即起作用,而不是最后两个函数。任何人,对于为什么会有任何想法?

$(this).on("keyup change", function() {
    var searchVal;
    console.log(searchVal);
    radios = $(section).prev(".filterform").find("input[type='radio']");
    //Find which search filter option is checked and use that class for the find 
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].name && $(radios[i]).prop("checked")) {
            searchVal = radios[i].value;
        }
    }
    var filter = $(this).val();
    if (filter) {
        $(section).find("." + searchVal + ":not(:contains(" + filter +      "))").closest(".projects").slideUp();
        $(section).find("." + searchVal + ":contains(" + filter + ")").closest(".projects").slideDown();
    } else {
        $(section).find(".projects").slideDown();
    }
    $(section).find(".pages > .projects").unwrap();
    context.createPages(4);
    context.paginate();
});

4 个答案:

答案 0 :(得分:1)

element.keypress(function(e){
//...
if(this.selectionStart==0){
    //Do something
}

}

答案 1 :(得分:0)

尝试使用"#target"的{​​{1}} insteand之类的ID选择器:

this

答案 2 :(得分:0)

使用

keyPressed or keyUp , keyDown event 

直接读取密钥,无需运行DOM。 你可以选择

  .shiftKey

事件对象的属性,用于区分大小写

如果你愿意的话,保持那个字符串。 但是在下一次活动中,无论如何你的DOM都会保留第一个字母,然后你就可以使用这个&#34; hybrid&#34;方法......

答案 3 :(得分:0)

For anyone else who may have a similar problem the solution i found that works best for me was to add a 500ms timeout for my pagination functions within my 'keyup' event.

setTimeout(function() {
    $(section).find(".pages > .projects").unwrap();
    context.createPages(4);
    context.paginate();
}, 500);