【C#/Blazor】textareaで特定キー入力のみを無効化したいで解決できなかったことの続きとなります。
前提・実現したいこと
Blazorにてtextareaの中でTab文字を使用したいです。
JavaScriptでは下記のようにすることで実現できますが、Blazorで同様のことは可能でしょうか?
html
1<html> 2<body> 3 <textarea 4 id="txt" 5 onkeydown="inputTab(event)" 6 style="height:300px;width:300px;" 7 ></textarea> 8 9 <script> 10 const txt=document.getElementById("txt") 11 12 function inputTab(e){ 13 if(e.code=="Tab"){ 14 e.preventDefault(); 15 txt.value+="\t"; 16 //本当はカーソル位置にTab挿入。簡略化のため割愛。 17 } 18 } 19 </script> 20</body> 21</html>
発生している問題・エラーメッセージ
Enter等の特殊キーはonkeypressイベントで拾うことができますが、
そもそもTabキーはonkeypressで拾えないようです。
(preventDefaultを使用してもフォーカスの移動が発生します)
Blazor
1<textarea 2 @bind-value="txt" 3 @bind-value:event="oninput" 4 @onkeypress="inputTab" 5 @onkeypress:preventDefault="useTab" 6 style="height:300px;width:300px;" 7></textarea> 8 9@code{ 10 bool useTab=false; 11 string txt=""; 12 13 void inputTab(KeyboardEventArgs e){ 14 if(e.Key=="Tab"){ 15 useTab=true; 16 txt+="\t"; 17 //本当はカーソル位置にTab挿入。簡略化のため割愛。 18 } 19 else{ 20 useTab=false; 21 } 22 } 23}
該当のソースコード
質問事項用のソースコードは下記リポジトリにまとめています。
TestKeyOff
補足情報(FW/ツールのバージョンなど)
.NET Core SDK (3.1.200)
Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-preview2.20160.5
onkeypressが使用できないため、正直詰みだと思うのですが、
もし、解決できる方法がありましたらお教えいただけると幸いです。
どうぞ、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー