代码之家  ›  专栏  ›  技术社区  ›  christophe

在下拉菜单中的输入字段上停止点击事件(AngularJS过滤器元素)

  •  2
  • christophe  · 技术社区  · 11 年前

    我有一个下拉菜单,里面有一个输入字段来搜索我的li元素。问题是:每当我点击输入字段放入搜索查询时,就会发生点击事件,下拉菜单就会消失。

    我在输入字段上尝试了preventDefault,但没有成功。我该如何制止这种行为?

    这是一个Plunker: http://plnkr.co/edit/SlbWZ5Bh62MDKWViUsMr

    这是我的标记(这是ng model=“customerFilter”的输入):

    <div class="button">
      <a class="btn btn-large grey dropdown-toggle" data-toggle="dropdown" href="#">
        Organisation
      </a>
      <ul class="dropdown-menu grey" >
        <input type="text" ng-model="customerFilter">
        <li ng-repeat="customer in customers | filter:customerFilter | orderBy:sortorder" ng-click="addCardGrey(customer)">{{ customer.name }}</li>
      </ul>
    </div>
    

    提前非常感谢!

    1 回复  |  直到 11 年前
        1
  •  10
  •   tasseKATT    11 年前

    preventDefault 停止浏览器对该事件执行的默认操作。

    您想要使用的是 stopPropagation ,这将阻止事件在事件链中冒泡。

    例如,您可以在这样的指令中使用它:

    代码:

    .directive('myInput', function () {
        return {
            restrict: 'A',
            link: function (scope, element) {
                element.bind('click', function (event) {
                    event.stopPropagation();
                });
            }
        };
    });
    

    标记:

    <input type="text" ng-model="customerFilter" my-input>