如何在AngularJS中使用Keydown事件

时间:2015-03-26 07:43:51

标签: angularjs

我用$ watch来检测我的文字长度。我想做长度!= 0可以键入+,但为什么长度!= 0可以键入+

<div ng-app="app" ng-controller="MyCtrl1">
    <input type="text" maxlength="10" numbers-only ng-model="Number"/>
    <hr />
    <p>Text {{Number}}</p>
    <p>Length {{Number.length}}</p>
    <p>Watch Lengh {{Watchlength}}</p>
    <hr/>
</div>

here is my jsFiddle

有人可以帮忙吗? 感谢

4 个答案:

答案 0 :(得分:0)

当用户执行“+”时,您正在执行event.preventDefault()。这意味着它不会在文本框中生成类型字符,因此它不会更改您的模型。

如果你遗漏event.preventDefault(),你会得到你期望的吗?

答案 1 :(得分:0)

看起来你只想让它只允许数字?

如果你想允许复杂和奇怪的东西,你可以在ng更改事件的单行中使用正则表达式,这将拦截字段更改,而不是按键,并且将更容易允许/拒绝更改...或更好的角度过滤器或内置文本输入过滤器,根本不需要任何控制器,无需使用常规JavaScript keydown事件构建复杂的指令......哎呀! :)为这么简单的事情做了很多工作。 :)你可能需要一个拥抱。

此外,keydown不适用于所有平板电脑或手机。请改用ngchange ...

https://docs.angularjs.org/api/ng/directive/ngChange

此外,角度内置了按键事件......

https://docs.angularjs.org/api/ng/directive/ngKeypress

答案 2 :(得分:0)

怎么样

element.on("keydown", function (event) {
  if (event.which === 107 && this.value.length === 0) { //this.value.length instead of watchlength
    console.log("++");
    event.preventDefault();
  }
});

答案 3 :(得分:0)