入力type = textを無効にする方法は?


123

text可能であれば、JavaScriptを使用したタイプの入力フィールドへの書き込みを無効にします。入力フィールドはデータベースから入力されます。そのため、ユーザーに値を変更させたくありません。

回答:


172

ページがレンダリングされるときにこれがわかっている場合は、データベースに値があるため、JavaScriptの代わりにレンダリング時に無効にすることをお勧めします。これを行うには、次のようにreadonly属性を(またはdisabled、フォーム送信からも削除する場合は)に追加します<input>

<input type="text" disabled="disabled" />
//or...
<input type="text" readonly="readonly" />

81
なぜこれが票を獲得するのか私にはわかりません、それは質問に答えません。JavaScriptの回答を期待していました。
ソフィー

3
@ソフィーそれは、アスカーが彼らの状況に基づいてそれを行うための最も正しい方法です。おそらく、タイトルの変更が必要です。
Nick Craver

6
無効モードでは、入力ボックスでのクリックイベントが防止されますが、読み取り専用ではできません。ご参考までに。
knutole 2014

「読み取り専用」入力フィールドを「無効」フィールドのようにLOOKにするには、「style = "color:grey; background-color:#F0F0F0;」を設定します。(これはこの回答へのコメントでした)
Jake Toronto

2
ブラウザーは「無効」または「読み取り専用」属性を自由に無視でき、データが確実に更新されないようにするためにこのメソッドに依存するべきではないことに注意してください...フォームを処理するサーバー側コードがまだ受け入れる場合そのフィールドからの値とそれを更新します。自分のフォームを作成するのに十分な知識がある人は誰でもこの「無効化」をバイパスできます...これは信頼できる環境でのみユーザーインターフェースの利便性のためです。それを防ぐ本当の方法は、サーバー側のロジックです。
Aaron Wallentine 16

206
document.getElementById('foo').disabled = true;

または

document.getElementById('foo').readOnly = true;

readOnlyFirefox(マジック)で正しく動作するには、キャメルケースにある必要があります。

デモ:https://jsfiddle.net/L96svw3c/は -多少の違いを説明disabledしてをreadOnly


3
これでうまくいきました。jqueryのバージョンは$( 'input')。prop( 'disabled'、true)
Daniel Sun Yang

私はこれに7年遅れています-しかし、2017年にこれら2つの間に意味的な違いはありますか?
Jules

2
あなたはまったく遅れていません、魔法はまだそこにあります(:私が当時テストしたプラットフォームを覚えていませんが、今日readonly(小文字)はUbuntuのFirefox 52ではまだ機能しません-キャメルケースである必要があります。
hudolejev 2017

なぜこれがうまくいかないのですか?でinput要素を作成しid="gate"、私が機能していないように見えるコードを試してみました...
Voldemort's Wrath '27

21

データがデータベースから読み込まれる場合は、タグを使用して表示しないことを検討し<input>てください。それでも、タグで直接無効にできます:

<input type='text' value='${magic.database.value}' disabled>

後でJavaScriptで無効にする必要がある場合は、「無効」属性を設定できます。

document.getElementById('theInput').disabled = true;

値をそのまま表示しないことをお勧めする理由<input>は、私の経験では、レイアウトの問題が発生するためです。テキストが長い場合、<input>ユーザーはテキストをスクロールしてみる必要がありますが、これは通常の人が考えていることではありません。<span>何かにドロップするだけで、スタイリングの柔軟性が高まります。


3
一部のブラウザでは、無効にするとテキストがほとんど読めなくなる可能性があることに注意してください。読み取り専用属性を使用することをお勧めします。たとえば、<input type = "text" value = "foo" readonly>
Olly Hodgson

7

jqueryでもできます:

$('#foo')[0].disabled = true;

作業例:

$('#foo')[0].disabled = true;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="foo" placeholder="placeholder" value="value" />


1
@Chani Pozエラーが発生するjqueryオブジェクトでネイティブjsセッターを呼び出しています。$( '#foo')[0] .disabled = trueまたは$( '#foo')。get(0).disabled = trueが機能します
Arek Kostrzeba

6

入力ボックスへの参照を取得し(例:)document.getElementById('mytextbox')、そのreadonlyプロパティをtrue次のように設定します。

myInputBox.readonly = true;

または、このプロパティをインラインで追加することもできます(JavaScriptは必要ありません)。

<input type="text" value="from db" readonly="readonly" />

(XHTMLではなく)HTMLを記述している場合は、<input type = "text" value = "from db" readonly>
Olly Hodgson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.