回答編集履歴
5
訂正
answer
CHANGED
@@ -39,4 +39,16 @@
|
|
39
39
|
以下の記事にあるよとおり、メジャーなブラウザでは IME が ON の時は onkeypress イベントが発生しないはずなのですが、Blazor では何故クライアント側の @onkeypress="KeyHandler3" の設定でサーバー側の KeyHandler3 ハンドラに制御が飛んでくるのかは分かりませんが。
|
40
40
|
|
41
41
|
onkeydown属性 onkeypress属性 onkeyup属性
|
42
|
-
[https://w3g.jp/xhtml/dic/onkeydown](https://w3g.jp/xhtml/dic/onkeydown)
|
42
|
+
[https://w3g.jp/xhtml/dic/onkeydown](https://w3g.jp/xhtml/dic/onkeydown)
|
43
|
+
|
44
|
+
**【訂正】**
|
45
|
+
|
46
|
+
上の【追記2】で、
|
47
|
+
|
48
|
+
> IME が ON の時は onkeypress イベントが発生しないということはなくて、
|
49
|
+
|
50
|
+
と書きましたが、**間違いでしたので訂正します**。
|
51
|
+
|
52
|
+
上に書いた「メジャーなブラウザでは IME が ON の時は onkeypress イベントが発生しない」というのは Blazor でも同じで、自分が提案したコードで IME が ON の時(直接入力以外の時)でもうまくいくのは onkeypress イベントが発生しないので preventDefault が働かないからでした。
|
53
|
+
|
54
|
+
但し、Enter キーを押したときは IME が ON の時でも onkeypress イベントは発生し、制御は C# のコードに飛んでくるので期待した結果(Enter キー入力はスキップ)になるということでした。
|
4
追記
answer
CHANGED
@@ -34,4 +34,9 @@
|
|
34
34
|
|
35
35
|
上の追記の件、自分の環境で確認しましたが、IME が ON の時は onkeypress イベントが発生しないということはなくて、期待通り Enter は入力できないようになります。
|
36
36
|
|
37
|
-
ブラウザ依存のとことろがあるようですが、Microsoft Edge 44.18362.449.0, Google Chrome 80.0.3987.149, Firefox 74.0, Opera 67.0.3575.97 で試した限り同じ結果でした。
|
37
|
+
ブラウザ依存のとことろがあるようですが、Microsoft Edge 44.18362.449.0, Google Chrome 80.0.3987.149, Firefox 74.0, Opera 67.0.3575.97 で試した限り同じ結果でした。
|
38
|
+
|
39
|
+
以下の記事にあるよとおり、メジャーなブラウザでは IME が ON の時は onkeypress イベントが発生しないはずなのですが、Blazor では何故クライアント側の @onkeypress="KeyHandler3" の設定でサーバー側の KeyHandler3 ハンドラに制御が飛んでくるのかは分かりませんが。
|
40
|
+
|
41
|
+
onkeydown属性 onkeypress属性 onkeyup属性
|
42
|
+
[https://w3g.jp/xhtml/dic/onkeydown](https://w3g.jp/xhtml/dic/onkeydown)
|
3
追記2
answer
CHANGED
@@ -28,4 +28,10 @@
|
|
28
28
|
|
29
29
|
【追記】
|
30
30
|
|
31
|
-
今思い出したのですが、javascript のコード (Blazor の C# のコードではなく) で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
|
31
|
+
今思い出したのですが、javascript のコード (Blazor の C# のコードではなく) で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
|
32
|
+
|
33
|
+
【追記2】
|
34
|
+
|
35
|
+
上の追記の件、自分の環境で確認しましたが、IME が ON の時は onkeypress イベントが発生しないということはなくて、期待通り Enter は入力できないようになります。
|
36
|
+
|
37
|
+
ブラウザ依存のとことろがあるようですが、Microsoft Edge 44.18362.449.0, Google Chrome 80.0.3987.149, Firefox 74.0, Opera 67.0.3575.97 で試した限り同じ結果でした。
|
2
追記&訂正
answer
CHANGED
@@ -28,4 +28,4 @@
|
|
28
28
|
|
29
29
|
【追記】
|
30
30
|
|
31
|
-
今思い出したのですが、javascript で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
|
31
|
+
今思い出したのですが、javascript のコード (Blazor の C# のコードではなく) で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
|
1
追記
answer
CHANGED
@@ -24,4 +24,8 @@
|
|
24
24
|
<input @onkeypress:preventDefault="_shouldPreventDefault" />
|
25
25
|
```
|
26
26
|
|
27
|
-
の _shouldPreventDefault を true / false に切り替えてコントロールしようと試してみましたが、キーを押した時点で即文字が input 要素の value 属性に反映されてしまうのでダメでした。
|
27
|
+
の _shouldPreventDefault を true / false に切り替えてコントロールしようと試してみましたが、キーを押した時点で即文字が input 要素の value 属性に反映されてしまうのでダメでした。
|
28
|
+
|
29
|
+
【追記】
|
30
|
+
|
31
|
+
今思い出したのですが、javascript で IME が ON の時は onkeypress イベントが発生しなくて、やむを得ず onkeyup で処理したことがありました。上の回答は IME が OFF の時しか試していません。今検証できる環境にないので、後で試してみます。
|