首页 文章

从自动完成中选择的事件

提问于
浏览
2

我有一个带有keydown的文本框,单击并更改绑定到它的事件处理程序 . 当用户在此文本框中输入文本时,预览会同时更新 . 这很棒!

但是,当用户输入一些文本然后从自动完成中选择时,只有用户输入的文本在预览中可见 .

它仅在用户离开文本框或单击其中或输入更多字符时更新 .

用户从自动填充中选择的瞬间是否有任何事件被触发?

注意:我没有使用jquery自动完成插件或任何东西,只是Web浏览器的autocoplete .

2 回答

  • 3

    我刚遇到同样的问题 . 单击建议的自动填充值时,浏览器(在本例中为Chrome)根本不会触发任何事件 . 所以我使用setInterval每100ms左右轮询我的输入字段以查看它们的值是否已更改,如果是,则调用相应的函数 .

    这是我的代码(使用jQuery):

    var $form = $(".user");
      var $email = $("input[name='email']",$form);
    
      // start polling when the field is focused
      $email.focus(function()
        {
          var $inp = $(this);
          $inp.data("val_old",$inp.val());
          $inp.data("val_poll",setInterval(function()
            {
              if ($inp.data("val_old") != $inp.val())
              {
                checkEmail(); // value has changed, take some action
                $inp.data("val_old",$inp.val());
              }
            },100));
        });
    
      // stop polling on blur
      $email.blur(function()
        {
          clearInterval($(this).data("val_poll"));
          $(this).removeData("val_old val_poll");
        });
    

    我曾经有一个onkeypress事件,但是这个轮询器不再需要了 .

    不是很漂亮,但很有效 . 适用于任何浏览器 .

  • 0
    <script type="text/javascript">
        function fillReview() {
            var email = document.getElementById("email");
            var review = document.getElementById("email-review");
            review.innerHTML = email.value;
        }
    </script>
    
    
    <input type="text" id="email"  onkeyup="fillReview();" />
    <span id="email-review"></span>
    

相关问题