Javascript OnClick需要双倍而不是单击

时间:2015-10-19 10:05:02

标签: javascript jquery html onclick

这是一个从数组中找到结果的简短脚本(ar_menu_ref)。结果是一个简单的URL链接。但我需要双击才能打开链接。

输入> liveSearchValue(用户输入值) div> liveSearchResultList(liveSearchMenu()生成的结果)

首次点击生成的链接再次运行“liveSearchMenu()”。但为什么?此html标签上没有“onclick”,注册事件或其他任何内容(使用IE11进行测试和验证)。

<html>
  <head>
    <script src="jquery-1.4.2.js"></script>
    <script>
      var ar_menu_ref = new Array( new Array("home", "http://google.de"), new Array("home zwei", "http://google.de"), new Array("home drei", "http://google.de"), new Array("home vier", "http://google.de"), new Array("home fuenf", "http://google.de"), new Array("home sechs", "http://google.de"), new Array("home sieben", "http://google.de"), new Array("home acht", "http://google.de"), new Array("home neun", "http://google.de"), new Array("home zehn", "http://google.de"), new Array("home elf", "http://google.de"), new Array("home zwoelf", "http://google.de"));
      var ar_findings = new Array();
      var string;
      var index;
      function liveSearchMenu(){
        string = $("#liveSearchValue").val();
        ar_findings = new Array();
        for(var i=0; i<ar_menu_ref.length && ar_findings.length < 10 ; i++){ 
          index = ar_menu_ref[i][0].indexOf(string);
          if(index >= 0){
            ar_findings.push(i);
          }
        }

        $("#liveSearchResultList").html("");
        for(var j=0; j<ar_findings.length; j++){ 
          $("#liveSearchResultList").append("<a href='"+ ar_menu_ref[ar_findings[j]][1] +"'>" + ar_menu_ref[ar_findings[j]][0] + "</a><br/>");
        }
        console.debug(string);
        return true;
      }

      $(document).ready(function(){
        $('input').bind('change keyup',function (){
          liveSearchMenu();
        });
      });
    </script>
  </head>
  <body>
    <input id="liveSearchValue" type="text" value="">
    <div id="liveSearchResultList">
    </div>
  </body>
</html>

˚F

1 个答案:

答案 0 :(得分:0)

  

首次点击生成的链接再次运行“liveSearchMenu()”。但为什么呢?

$('input').bind('change keyup',function (){
  liveSearchMenu();
});

这是收听input的代码。它会侦听任何输入框中的更改,但它也会在任何输入框中侦听任何键(keyup)的释放。

也许你误解了change的作用。当元素的值发生变化时,它不会触发,而是仅在满足2个条件时触发:

  • 元素模糊(失去焦点);
  • 该元素的值与获得焦点时的值不同。

编辑:感谢Crisim Il Numenoreano帮助我更详细地解释。 :)