2016-07-01 6 views
4

私は透明な入力領域を持っています。それをクリックすると、輝く境界線が表示され、テキストを編集することができます。私はあなたがそれをクリックしたときにまだ表示されているが、テキストを編集不可能にするために、輝く境界線を取得しようとしています。HTML入力領域を読んだら選択可能にする

<input style='border:none; background:none;' value='TEXT'> 

編集できないのdivなどの入力行為は、あなたがそれをすべてを選択するために、入力エリアをダブルクリックすることはできませんreadonlyreadonly="readonly"を行い追加と熱烈な境界線は表示されません。テキストを変更せずに入力機能を保持するにはどうすればよいですか?ユーザーは、キーがテキストを入力することで押したときに

+0

を?あなたはそれを選択できますか?それをコピーしますか?それは焦点の背景を示している? –

答えて

4

あなたは、いくつかのCSSとreadonly属性を使用することができます:選択は正確に何を意味するの

input:focus { 
 
    box-shadow: 0 0 2px 2px #3d94db; 
 
}
<input style='border:none; background:none;' value='TEXT' readonly>

+1

パーフェクト、ホバー上の 'テキスト'カーソルも追加して同じように見える。 – Crizly

3

はたぶん、入力フィールド

にデフォルトのプロトコルをデフォルト値を与えます。それをpreventDefault()で上書きすることができます。

今、マウス右クリックイベントを使用してこれを回避できることに気付きました。したがって、別のイベントリスナーが必要ですcontextmenu。今、あなたはもはやこれで不正行為をすることはできません。

var inputField = document.getElementById("input-field"); 
 

 
inputField.addEventListener("keydown", function(event) { 
 
    event.preventDefault(); 
 
}); 
 

 
inputField.addEventListener("contextmenu", function(event) { 
 
    event.preventDefault(); 
 
});
<input type="text" id="input-field" value="This value can be selected" />

+1

読み取り専用の場合は、JSで偽造しないでください。 – zzzzBov

+1

マウスで値を入力すると、これは機能しません(値の貼り付けなど)。これを防ぐには、変更リスナーをキャッチして、入力フィールドをリセットする必要があります。 –

+0

それを指摘してくれてありがとう。私は完全にキーボードショートカットに慣れていたので、 'rightclick'を完全に忘れてしまった –

関連する問題