回答編集履歴

5

訂正

2020/03/26 02:26

投稿

退会済みユーザー
test CHANGED
@@ -81,3 +81,27 @@
81
81
  onkeydown属性 onkeypress属性 onkeyup属性
82
82
 
83
83
  [https://w3g.jp/xhtml/dic/onkeydown](https://w3g.jp/xhtml/dic/onkeydown)
84
+
85
+
86
+
87
+ **【訂正】**
88
+
89
+
90
+
91
+ 上の【追記2】で、
92
+
93
+
94
+
95
+ > IME が ON の時は onkeypress イベントが発生しないということはなくて、
96
+
97
+
98
+
99
+ と書きましたが、**間違いでしたので訂正します**。
100
+
101
+
102
+
103
+ 上に書いた「メジャーなブラウザでは IME が ON の時は onkeypress イベントが発生しない」というのは Blazor でも同じで、自分が提案したコードで IME が ON の時(直接入力以外の時)でもうまくいくのは onkeypress イベントが発生しないので preventDefault が働かないからでした。
104
+
105
+
106
+
107
+ 但し、Enter キーを押したときは IME が ON の時でも onkeypress イベントは発生し、制御は C# のコードに飛んでくるので期待した結果(Enter キー入力はスキップ)になるということでした。

4

追記

2020/03/26 02:26

投稿

退会済みユーザー
test CHANGED
@@ -71,3 +71,13 @@
71
71
 
72
72
 
73
73
  ブラウザ依存のとことろがあるようですが、Microsoft Edge 44.18362.449.0, Google Chrome 80.0.3987.149, Firefox 74.0, Opera 67.0.3575.97 で試した限り同じ結果でした。
74
+
75
+
76
+
77
+ 以下の記事にあるよとおり、メジャーなブラウザでは IME が ON の時は onkeypress イベントが発生しないはずなのですが、Blazor では何故クライアント側の @onkeypress="KeyHandler3" の設定でサーバー側の KeyHandler3 ハンドラに制御が飛んでくるのかは分かりませんが。
78
+
79
+
80
+
81
+ onkeydown属性 onkeypress属性 onkeyup属性
82
+
83
+ [https://w3g.jp/xhtml/dic/onkeydown](https://w3g.jp/xhtml/dic/onkeydown)

3

追記2

2020/03/24 02:28

投稿

退会済みユーザー
test CHANGED
@@ -59,3 +59,15 @@
59
59
 
60
60
 
61
61
  今思い出したのですが、javascript のコード (Blazor の C# のコードではなく) で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
62
+
63
+
64
+
65
+ 【追記2】
66
+
67
+
68
+
69
+ 上の追記の件、自分の環境で確認しましたが、IME が ON の時は onkeypress イベントが発生しないということはなくて、期待通り Enter は入力できないようになります。
70
+
71
+
72
+
73
+ ブラウザ依存のとことろがあるようですが、Microsoft Edge 44.18362.449.0, Google Chrome 80.0.3987.149, Firefox 74.0, Opera 67.0.3575.97 で試した限り同じ結果でした。

2

追記&訂正

2020/03/24 02:16

投稿

退会済みユーザー
test CHANGED
@@ -58,4 +58,4 @@
58
58
 
59
59
 
60
60
 
61
- 今思い出したのですが、javascript で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
61
+ 今思い出したのですが、javascript のコード (Blazor の C# のコードはなく) IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。

1

追記

2020/03/23 21:41

投稿

退会済みユーザー
test CHANGED
@@ -51,3 +51,11 @@
51
51
 
52
52
 
53
53
  の _shouldPreventDefault を true / false に切り替えてコントロールしようと試してみましたが、キーを押した時点で即文字が input 要素の value 属性に反映されてしまうのでダメでした。
54
+
55
+
56
+
57
+ 【追記】
58
+
59
+
60
+
61
+ 今思い出したのですが、javascript で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。