Enter 키를 누르면 클릭 이벤트가 트리거됩니까?
아래 코드에서removeSelectedCountry()
다음과 같은 경우에 호출되어야 합니다.span
요소가 클릭되고handleKeyDown($event)
다음이 있을 때 호출해야 합니다.keydown
에 대한 이벤트div
.
@Component({
selector: "wng-country-picker",
template: `
<ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0">
<li *ngFor="let country of selectedCountries">
<span class="Pill Pill--primary" (click)="removeSelectedCountry(country)">
{{ country.name }}
</span>
</li>
</ul>
<div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div>
`,
providers: [CUSTOM_VALUE_ACCESSOR]
})
그렇지만removeSelectedCountry()
는 키를 누를 때마다 호출됩니다.
코드가 작동하도록 하기 위해, 저는 그것을 바꿔야 했습니다.click
에게의 사건.mousedown
이벤트. 이제 정상적으로 작동합니다.
키가 왜 작동하는지 설명할 수 있는 사람이 있습니까?click
이벤트?
@Component({
selector: "wng-country-picker",
template: `
<ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0">
<li *ngFor="let country of selectedCountries">
<span class="Pill Pill--primary" (mousedown)="removeSelectedCountry(country)">
{{ country.name }}
</span>
</li>
</ul>
<div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div>
`,
providers: [CUSTOM_VALUE_ACCESSOR]
})
클래스 스니펫 추가 중:
export class CountryPickerComponent {
private selectedCountries: CountrySummary[] = new Array();
private removeSelectedCountry(country: CountrySummary){
// check if the country exists and remove from selectedCountries
if (this.selectedCountries.filter(ctry => ctry.code === country.code).length > 0)
{
var index = this.selectedCountries.indexOf(country);
this.selectedCountries.splice(index, 1);
this.selectedCountryCodes.splice(index, 1);
}
}
private handleKeyDown(event: any)
{
if (event.keyCode == 13)
{
// action
}
else if (event.keyCode == 40)
{
// action
}
else if (event.keyCode == 38)
{
// action
}
}
ENTER 키의 경우 사용하지 않는 이유(keyup.enter)
:
@Component({
selector: 'key-up3',
template: `
<input #box (keyup.enter)="values=box.value">
<p>{{values}}</p>
`
})
export class KeyUpComponent_v3 {
values = '';
}
올바른 솔루션입니다! 버튼에 정의된 속성 유형이 없기 때문에 각진이 키업 이벤트를 제출 요청으로 발급하려고 시도하고 버튼에서 클릭 이벤트를 트리거할 수 있습니다.
<button type="button" ...></button>
데보라 K에게 큰 감사를 드립니다!
Angular2 - Enter Key가 양식에 있는 첫 번째(클릭) 기능을 실행합니다.
사용하다(keyup.enter)
.
Angular는 주요 이벤트를 필터링할 수 있습니다.Angular에는 키보드 이벤트에 대한 특수 구문이 있습니다.Angular's에 바인딩하여 Enter 키만 들을 수 있습니다.keyup.enter
유사 사건
각도 6에는 새로운 방법이 있습니다.입력 태그에 추가
(keyup.enter)="keyUpFunction($event)"
어디에keyUpFunction($event)
당신의 기능입니다.
@Component({
selector: 'key-up3',
template: `
<input #box (keyup.enter)="doSomething($event)">
<p>{{values}}</p>
`
})
export class KeyUpComponent_v3 {
doSomething(e) {
alert(e);
}
}
이건 나한테 효과가 있어요!
<form (keydown)="someMethod($event)">
<input type="text">
</form>
someMethod(event:any){
if(event.keyCode == 13){
alert('Entered Click Event!');
}else{
}
}
개인적으로 나에게 유용한 것은 다음과 같습니다.
(mousedown)="callEvent()" (keyup.enter)="$event.preventDefault()
keyup.enter
이벤트가 키업 시 트리거되지 않도록 하지만 키다운 시에도 발생합니다.
언급URL : https://stackoverflow.com/questions/37936961/does-enter-key-trigger-a-click-event
'source' 카테고리의 다른 글
패키지의 라이센스 필드에 무엇을 넣어야 합니까?만약 내 코드가 내가 일하는 회사에서만 사용된다면 json? (0) | 2023.08.02 |
---|---|
항목을 제거할 수 없습니다.디렉터리가 비어 있지 않습니다. (0) | 2023.08.02 |
언제 @class method를 사용하고 when def method(self)를 사용해야 합니까? (0) | 2023.08.02 |
Angular4 예외:'input'의 알려진 속성이 아니므로 'ngClass'에 바인딩할 수 없습니다. (0) | 2023.08.02 |
django: json 개체로 POST 기반 보기 테스트 (0) | 2023.08.02 |