もう迷わない!jQueryで入力欄を読み取り専用にする3つの方法
jQueryで入力欄を読み取り専用にする方法
必要なもの
- jQueryライブラリ
- 読み取り専用にしたい入力欄
手順
- jQueryライブラリを読み込みます。
- 読み取り専用にしたい入力欄をjQueryセレクターで取得します。
attr()
メソッドを使って、readonly
属性にtrue
を代入します。
コード例
<input type="text" id="myInput">
$(document).ready(function(){
$("#myInput").attr("readonly", true);
});
上記のコードを実行すると、id="myInput"
の入力欄が読み取り専用になり、ユーザーは入力できなくなります。
補足
readonly
属性をfalse
に設定することで、入力欄を再び編集可能にすることができます。- 上記以外にも、
prop()
メソッドやaddClass()
メソッドを使って、読み取り専用属性を設定することができます。
jQuery で入力欄を読み取り専用にするサンプルコード
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>jQueryで入力欄を読み取り専用にする</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="input1" value="入力欄1">
<input type="text" id="input2" value="入力欄2">
<button id="toggleButton">読み取り専用を切り替える</button>
<script>
$(document).ready(function(){
let isReadonly = false;
$("#toggleButton").click(function(){
if (isReadonly) {
$("#input1, #input2").removeAttr("readonly");
isReadonly = false;
} else {
$("#input1, #input2").attr("readonly", true);
isReadonly = true;
}
});
});
</script>
</body>
</html>
説明
- HTMLコードでは、2つの入力欄 (
input1
とinput2
) と、ボタン (toggleButton
) を用意します。 $(document).ready()
関数内で、以下の処理を実行します。isReadonly
変数に、初期状態を読み取り専用ではないことを示すfalse
を代入します。
このサンプルコードを実行すると、以下のようになります。
- 初期状態では、2つの入力欄とも編集可能です。
- 「読み取り専用を切り替える」ボタンをクリックすると、2つの入力欄が読み取り専用になり、編集できなくなります。
- もう一度ボタンをクリックすると、入力欄が再び編集可能になります。
このサンプルコードを参考に、状況に応じて入力欄を読み取り専用に切り替える処理を作成することができます。
jQueryで入力欄を読み取り専用にするその他の方法
prop()
メソッドを使って、readonly
プロパティを直接操作することもできます。
$("#input1").prop("readonly", true);
addClass()メソッドを使う
readonly
クラスをCSSで定義し、addClass()
メソッドを使って入力欄にそのクラスを追加する方法もあります。
CSS
.readonly {
readonly: true;
}
JavaScript
$("#input2").addClass("readonly");
disable()
メソッドを使うと、入力欄を無効化し、読み取り専用にすることができます。ただし、この方法では、入力欄だけでなく、他の要素も無効化してしまう可能性があることに注意が必要です。
$("#input1").disable();
<input type="hidden">を使う
入力欄を非表示にし、代わりに <input type="hidden">
を使って値を保持する方法もあります。この方法では、見た目は入力欄がなくなりますが、実際には値を保持することができます。
<input type="text" id="input3" value="入力欄3">
<input type="hidden" id="hiddenInput3" value="">
$("#input3").hide();
$("#hiddenInput3").val($("#input3").val());
- シンプルで分かりやすい方法であれば、
attr()
メソッドを使うのがおすすめです。 - CSSを使ってスタイルを統一したい場合は、
addClass()
メソッドを使うのが良いでしょう。 - 入力欄だけでなく、他の要素も無効化したい場合は、
disable()
メソッドを使うことができます。 - 入力欄を非表示にして値を保持したい場合は、
<input type="hidden">
を使う方法が有効です。
それぞれの方法のメリットとデメリットを理解した上で、状況に合った方法を選択してください。
jquery