teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字の修正

2020/01/18 06:59

投稿

yureighost
yureighost

スコア2183

answer CHANGED
@@ -55,7 +55,7 @@
55
55
  $('#first').on('mouseup', (e)=>{
56
56
  // マウスの左ボタンが離された場合
57
57
  if(e.button == 0){
58
- $('#first').off('keyup');
58
+ $('#first').off('keypress');
59
59
  }
60
60
  });
61
61
  ```

1

追記

2020/01/18 06:59

投稿

yureighost
yureighost

スコア2183

answer CHANGED
@@ -30,4 +30,32 @@
30
30
  keypressイベントはキーボードを押した時にイベント発火するものなので、
31
31
  上記のことを行うのは不可能だと思います。
32
32
 
33
- javascriptのイベントの動作を再確認することをお勧めします。
33
+ javascriptのイベントの動作を再確認することをお勧めします。
34
+
35
+
36
+ **追記**
37
+ クリックしながらの要件なら離した時にkeypressイベントを削除しないと、
38
+ イベントが残り続けてキーボード押下でイベント発火し続けてしまいますね。
39
+ この場合はclickイベントを使うより、mousedownイベントでkeypressイベントを追加し、mouseupイベントで削除するのがいいかと思います。
40
+ 試しのサンプルコードを載せておきます。
41
+ ```javascript
42
+ $('#first').on('mousedown', (e)=>{
43
+ // マウスの左ボタンが押された場合
44
+ if(e.button == 0){
45
+ // 選択中のタグを切り替える
46
+ $('#second').removeClass('selected');
47
+ $('#first').addClass('selected');
48
+
49
+ $('#first').focus();
50
+ $('#first').on('keypress', (e)=>{
51
+ console.log("first",e.key)
52
+ });
53
+ }
54
+ });
55
+ $('#first').on('mouseup', (e)=>{
56
+ // マウスの左ボタンが離された場合
57
+ if(e.button == 0){
58
+ $('#first').off('keyup');
59
+ }
60
+ });
61
+ ```