我用$ 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>
有人可以帮忙吗? 感谢
答案 0 :(得分:0)
当用户执行“+”时,您正在执行event.preventDefault()
。这意味着它不会在文本框中生成类型字符,因此它不会更改您的模型。
如果你遗漏event.preventDefault()
,你会得到你期望的吗?
答案 1 :(得分:0)
看起来你只想让它只允许数字?
如果你想允许复杂和奇怪的东西,你可以在ng更改事件的单行中使用正则表达式,这将拦截字段更改,而不是按键,并且将更容易允许/拒绝更改...或更好的角度过滤器或内置文本输入过滤器,根本不需要任何控制器,无需使用常规JavaScript keydown事件构建复杂的指令......哎呀! :)为这么简单的事情做了很多工作。 :)你可能需要一个拥抱。
此外,keydown不适用于所有平板电脑或手机。请改用ngchange ...
https://docs.angularjs.org/api/ng/directive/ngChange
此外,角度内置了按键事件......
答案 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)