HTML/JavaScript でターミナル ウィンドウを作成しており、入力にテキストエリアを使用しています。テキストエリア内のテキストのセクションが削除されないようにしたいと思います。たとえば、テキスト領域に "C:\>Random Code" というテキストがある場合、ユーザーが "C:\>" テキストを削除できないようにしたいと考えています。これはJavaScriptを使用して可能ですか?
2 に答える
jQuery を想定すると、このスクリプトはキーストロークをリッスンし、必要なテキストが見つからない場合 (つまり、ユーザーが削除しようとした場合) に、自分自身をそこに追加します。
var requiredText = 'C:>';
$('textarea').on('input',function() {
if (String($(this).val()).indexOf(requiredText) == -1) {
$(this).val(requiredText);
}
}
テキストエリアの一部を編集不可にすることはできません (コントロール全体のみ)。
さまざまな JavaScript トリックを使用できます (ユーザーが許可したくないことをしたい場合は、keypress イベントをリッスンし、event.preventDefault を使用してイベントをキャンセルします)。
もう 1 つの解決策は、入力の削除できないセクションを使用する代わりに、定義済みの文字列をユーザー入力に自動的に追加 (または先頭に追加) することです (そして、何らかの方法でユーザーに便利に表示します)。
アップデート:
したがって、私のソリューションは次のようになります。
var requiredText = 'C:>';
$('textarea').on('keyup',function(event) {
if (GetSelectionStart(this) < requiredText.length){
event.preventDefault();
event.stopPropagation();
}
}
GetSelectionStart
選択したテキストの開始位置 (テキスト範囲が選択されていない場合はキャレット位置) を示す関数はどこにありますか。いくつかの可能な実装については、たとえば、最初からの文字でのテキストエリアのキャレット位置を参照してください
この関数は、requiredText が常に文字列の先頭にあると想定しています。もちろん、より複雑なシナリオに適応させることもできます。