如何使用datalist属性自动完成时检测文本更改

时间:2014-11-16 03:43:43

标签: jquery angularjs dart angular-dart

我正在尝试让输入字段对文本更改事件做出反应。该字段具有datalist属性以进行自动完成。

据我了解,如果我想在用户输入时挂钩事件(而不是onBlur),我可以使用ng-keyup

当用户输入内容时,它可以正常工作,但是当他点击自动完成框中的选项时却无法正常工作。

我可以听到另一个事件,当用户自动填充他的选择时能够触发一个动作吗?

我也尝试ng-keydownng-keypress但没有成功。

以下是我如何申报输入框:

<input id="id" list="someList" ng-model="myModel" ng-keyup="functionToCall()">

PS:我正在使用Angular Dart。

编辑:

所以我重试了同样的事情,但我删除了ng-model属性以确保它在更新模型时不会引起摩擦。所以在我看来:

<input id="bob" list="itemOptions" placeholder="Type an item name" ng-change="onItemNameChange2()" >

在我的组件中:

void onItemNameChange2() {
  print("changed");
}

它仅在changed时打印onBlur()

我也尝试删除list属性:

<input id="bob" placeholder="Type an item name" ng-change="onItemNameChange2()">

并且只在onBlur时打印(所以只是键入不会使print()方法被调用,我真的要离开输入字段)

1 个答案:

答案 0 :(得分:1)

您可以使用ng-change。我在JavaScript中做了一个例子fiddle。它应该在Dart中起作用。

listng-change附加到输入。

<input type="text" ng-model="myData" list="myList" ng-change="textChange()" />
<datalist id="myList">
    <option ng-repeat="item in items" value="{{item}}" />
</datalist>

ng-change实际上并不是一个HTML事件,它是在视图数据更新时触发的角度事件。