【发布时间】:2016-12-29 07:33:53
【问题描述】:
之前我使用jQuery处理的问题如下:
$("#textInput").keydown(function (e) {
return e.which !== 32;
});
您将如何使用新的 Angular 和 Typescript 来处理它?
【问题讨论】:
标签: angular typescript
之前我使用jQuery处理的问题如下:
$("#textInput").keydown(function (e) {
return e.which !== 32;
});
您将如何使用新的 Angular 和 Typescript 来处理它?
【问题讨论】:
标签: angular typescript
或者简单地说;
<input type="text" (keydown.space)="$event.preventDefault();">
我设法创建了一个方便的指令,它接受你给它的任何键号并阻止它们
@Directive( {
selector : '[prevent-keys]',
host : {
'(keydown)' : 'onKeyUp($event)'
}
} )
export class PreventKeyseDirective {
@Input( 'prevent-keys' ) preventKeys;
onKeyUp ( $event ) {
if ( this.preventKeys && this.preventKeys.includes( $event. keyCode ) ) {
$event.preventDefault();
}
}
}
然后像这样使用它
<input [prevent-keys]="[32, 37 , 38 , 39 , 40 ]" type="text">
这将防止空格,上,左,下,右键:D
【讨论】:
(keydown.space) 是什么意思? @Milad 请添加一些解释
您应该像这样在模板中使用事件绑定:
<input type="text" (keydown)="keyDownHandler($event)"/>
然后在你的控制器中定义keyDownHandler()函数:
keyDownHandler(event: Event) {
if (event.which === 32)
event.preventDefault();
}
【讨论】:
在组件中你应该实现这个方法。
onKeydown(event) {
if (event.keyCode === 32 ) {
return false;
}
}
之后,在 HTML 标签中,
<input type="text" class="form-control col-md-10" placeholder="First Name" (keydown)="onKeydown($event)" [value]="firstName" #newFirstName>
【讨论】:
我只是像这样将$贴在我班的顶部
declare var $: any;
您可以按照您的说明在代码中使用$
$("#textInput").keydown(function (e) {
return e.which !== 32;
});
否则 angular2 中有多种方法,例如 keyup 和 keydown 等等,您也可以使用这些方法
【讨论】: