jQueryを使用して入力を読み取り専用にするにはどうすればよいですか?


142

次の入力があります。

  <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname"/>

jQueryを使用して、要素またはその値を変更せずに、この要素を読み取り専用の入力にするにはどうすればよいですか?

回答:


255

最近のjQuery 1.6.1以降では、ブール属性/プロパティを設定するときに.prop()を使用することをお勧めします。

$("#fieldName").prop("readonly", true);

89

次の属性を追加するだけです

// for disabled i.e. cannot highlight value or change
disabled="disabled"

// for readonly i.e. can highlight value but not change
readonly="readonly"

jQueryのは、(代替要素に変更を作るdisabledためreadonlyの設定について以下にreadonly属性)。

$('#fieldName').attr("disabled","disabled") 

または

$('#fieldName').attr("disabled", true) 

注:jQuery 1.6以降では、.prop()ではなくを使用することをお勧めします.attr()。上記のコードは、の代わり.attr()を除いてまったく同じように機能します.prop()


4
フィールドを無効にすることは、編集不可にすることと同じではありませんよね?無効にすると送信も行われなくなります
Dave

2
@デイブ正しい。また、読み取り専用の入力に焦点を合わせることができ、無効な入力には焦点を合わせることができません
Russ Cam

74

入力を読み取り専用にするには:

 $("#fieldName").attr('readonly','readonly');

読み取り/書き込みで使用するには:

$("#fieldName").removeAttr('readonly');

disabled属性を追加しても、値はpostで送信されません。


7

あなたは、単にそれをマークすることによって、これを行うことができますdisabledenabled。このコードを使用してこれを行うことができます:

//for disable
$('#fieldName').prop('disabled', true);

//for enable 
$('#fieldName').prop('disabled', false);

または

$( '#fieldName')。prop( 'readonly'、true);

$( '#fieldName')。prop( 'readonly'、false);

--- attrの代わりにpropを使用する方が良いです。


7
無効化された入力は、フォームpost / getで送信されません。
Nielsvh

4

この例を使用して、テキストボックスを読み取り専用にするかどうかを指定します。

<input type="textbox" class="txt" id="txt"/>
<input type="button" class="Btn_readOnly" value="Readonly" />
<input type="button" class="Btn_notreadOnly" value="Not Readonly" />

<script>

    $(document).ready(function(){
       ('.Btn_readOnly').click(function(){
           $("#txt").prop("readonly", true);
       });

       ('.Btn_notreadOnly').click(function(){
           $("#txt").prop("readonly", false);
       });
    });

</script>

3

2すなわち、属性、ありreadonlydisabled半読み取り専用の入力を行うことができ、。しかし、それらの間には小さな違いがあります。

<input type="text" readonly />
<input type="text" disabled />
  • このreadonly属性により、入力テキストが無効になり、ユーザーはそれを変更できなくなります。
  • このdisabled属性は入力テキストを無効(変更不可)にするだけでなく、送信することできません

jQueryアプローチ(1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

jQueryアプローチ(2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

JavaScriptアプローチ:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PSはでprop導入されましたjQuery 1.6


0

与えられた-

<input name="foo" type="text" value="foo" readonly />

これは機能します-(jquery 1.7.1)

$('input[name="foo"]').prop('readonly', true);

readonlyとreadOnlyでテストしました-両方とも動作しました。


-1

多分無効にされた属性を使用してください:

<input disabled="disabled" id="fieldName" name="fieldName" type="text" class="text_box" />

または、ラベルタグを使用するだけです;)

<label>

1
質問には、「jQueryを使用する」(動的に実行する必要があることを意味します)および「読み取り専用」(無効にするのとは異なります)とありました。
クエンティン

-1
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
    <title></title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>
<body>
    <div>
        <input id="fieldName" name="fieldName" type="text" class="text_box" value="Firstname" />
    </div>
</body>

<script type="text/javascript">
    $(function()
    {
        $('#fieldName').attr('disabled', 'disabled');

    });
</script>
</html>

-1

おそらくそれも追加することは意味がある

$('#fieldName').prop('readonly',false);

トグルオプションとして使用できます。


私はjQuery 3.3.1でこれを試しましたreadonlyが、渡された値に関係なく、要素に属性を追加するだけです。したがって、見かけ上は値をfalseに設定しているにもかかわらず、この例では入力フィールドを読み取り専用にします。
TMN

-1

JQuery 1.12.1では、私のアプリケーションはコードを使用します。

$('"#raisepay_id"')[0].readOnly=true;

$('"#raisepay_id"')[0].readOnly=false;

そしてそれは動作します。


-2

setReadOnly(state)はフォームに非常に役立ちます。フィールドをsetReadOnly(state)に直接またはさまざまな条件から設定できます。ただし、readOnlyを使用して、セレクターに不透明度を設定することをお勧めします。それ以外の場合、attr = 'disabled'も同じ方法。

readOnlyの例:

$('input').setReadOnly(true);

またはさまざまな条件を通じて

var same = this.checked;
$('input').setReadOnly(same);

ここでは、stateブール値を使用して、チェックボックスのクリックに応じて入力からreadonly属性を設定および削除しています。


上記の例は機能しません-setReadOnlyはjqueryや他のブラウザに組み込まれた関数ではありません
Dave B 84

-3

HTMLで

$('#raisepay_id').attr("readonly", true) 

$("#raisepay_id").prop("readonly",true);

ブートストラップで

$('#raisepay_id').attr("disabled", true) 

$("#raisepay_id").prop("disabled",true);

jQueryは変化するライブラリであり、定期的に改善される場合があります。.attr()はHTMLタグから属性を取得するために使用されますが、完全に機能的ですが、.prop()は後でより意味的になるように追加され、「チェック済み」や「選択済み」などの値のない属性でより適切に機能します。

JQueryの新しいバージョンを使用している場合は、可能な限り.prop()を使用することをお勧めします。


2
これは無意味なので、私はこれに反対票を投じました。すべてがHTML、JavaScript、BootstrapがjQueryを使用しているため、事実は関係ありません。さらに、無効化と読み取り専用は、Bootstrapが使用されているかどうかに関係なく動作する2つの異なるものです。
simontemplar 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.