【问题标题】:jQuery - To perform a search using submit button on a live search plugin?jQuery - 使用实时搜索插件上的提交按钮执行搜索?
【发布时间】:2016-06-28 01:39:39
【问题描述】:

我开始使用mark.js 实时搜索插件,我能够对其进行修改以自动滚动到页面上正在搜索的文本部分。

像这样:

SEARCH BOX |_jklmno____| <-- User searches here
    123
    456
    789
    abcde
    fghi
    jklmno <--- Then the page will automatically scroll and stop here.
    pqrst

-> 完成,找到了文本

代码有效,如何构建一个按钮,当提交时,页面会跳转到下一个结果?

我尝试在提交表单时使用它跳转到下一个结果:

$('html,body').animate({scrollTop: mark.eq(index).offset().top}, 500);
    }       

这也是:

 else if ('mark[data-markjs]').live("submit", function(e) {
      e.mark();
              $('html,body').animate(
              {scrollTop: mark.offset().top -100}
              , 200);  

    });

但是没有用。

这是working fiddle **(要查看搜索字段,您必须稍微滚动一下结果选项卡)

这里是 jQuery:

$.noConflict()
jQuery(function($) {
  var mark = function() {

    // Read the keyword
     var keyword = $("input[name='keyword']").val();

    // Determine selected options
    var options = {


     "filter": function(node, term, counter, totalCounter){
        if(term === keyword && counter >= 1){
            return false;
        } else {
            return true;
        }
    },
    done: function() {
        var mark = $('mark[data-markjs]');
        if (mark.length) {

  $('html,body').animate({scrollTop: mark.eq(index).offset().top}, 500);


        }       


/*
else if ('mark[data-markjs]').live("submit", function(e) {
  e.mark();
          $('html,body').animate(
          {scrollTop: mark.offset().top -100}
          , 200);  

});
*/



}






    };
    $("input[name='opt[]']").each(function() {
      options[$(this).val()] = $(this).is(":checked");  });




    // Mark the keyword inside the context
    $(".context").unmark();
    $(".context").mark(keyword, options);


 };

  $("input[name='keyword']").on("keyup", mark);
  $("input[type='checkbox']").on("change", mark);



  $("input[name='keyword']").on("submit", mark);



 });

【问题讨论】:

  • 所以没有解决办法?

标签: javascript jquery jquery-ui jquery-plugins


【解决方案1】:

我和你的小提琴玩了一会儿。
这是一个很酷的问题。

我决定使用向上/向下箭头滚动到上一个/下一个结果...
而不是回车键或按钮。

这是我更改的主要部分:

$("input[name='keyword']").on("keyup", function(e){
    if(e.which==40){    // 40 = down arrow
        e.preventDefault();
        arrowOffset++;
    }
    if(e.which==38){    // 38 = up arrow
        e.preventDefault();
        arrowOffset--;
        if(arrowOffset<1){
            arrowOffset=1;
        }
    }
    mark(arrowOffset);
});

我没有找到如何“取消突出显示”之前的结果...
但是由于箭头使它滚动到正确的结果,我认为这样很酷。

done: function() {
    var mark = $('mark[data-markjs]').last();   // Scroll to last <mark>
    if (mark.length) {  
        $('html,body').animate({scrollTop: mark.offset().top-90}, 500);
    }
}

查看my fiddle 以获取完整的更新脚本。

【讨论】:

  • 说真的,到目前为止,我从未见过比你编写的这个脚本更棒的东西。我期待一个输入按钮,而您带有箭头和突出显示。多谢!自从我开始研究这件事已经过去了 1 周。现在我有了创建按钮的基础!耶!
  • 我玩得很开心!你正在做的事情很酷。请接受答案(绿色复选标记);)
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 2016-08-09
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多