テキストエリアの入力不可は、Javascriptできますが、
セレクトメニューを選択不可にできません。
初期状態でなく、ある条件が他で選択された時、
選択不可にしたいのですが、何か方法ございますか?
<form name=test>
<SELECT NAME="nengou">
<option value="1">昭和</option>
<option value="2">大正</option>
<option value="3">明治</option>
</SELECT>
</form>
No.2ベストアンサー
- 回答日時:
失礼。
もっとずっと簡単にできます。何を血迷っていたのか...<html>
<head>
<script>
sel = 0;
function force() {
if (sel != 0) {
document.form1.select1.value=sel;
}
}
</script>
</head>
<body>
<form name="form1">
<select name="select1" onChange="force()">
<option value="1">選択肢1</option>
<option value="2">選択肢2</option>
<option value="3">選択肢3</option>
</select>
<br>
<input type="button" onclick="sel=document.form1.select1.value" value="選択肢を固定">
<input type="button" onclick="sel=0" value="元に戻す">
</form>
</body>
</html>
No.1
- 回答日時:
DOM1を利用してよいのなら可能です。
(DOM1はIE5以上、Netscape6以上でサポートされています)サンプルを書いておきます。
<html>
<head>
<script>
selStore = null;
function fixSelection(selNode, node, i) {
if (selStore == null) {
selNode = document.getElementById("select1");
// cloneNode(true)を使用するとattributeが初期状態でしか複製されない
// 条件に合う(選択されている)ノードのみ自分で複製
selStore = selNode.cloneNode(false);
for (i=0; i<selNode.childNodes.length; i++) {
node = selNode.childNodes[i];
if ((node.nodeType == 1) && (node.nodeName.toUpperCase() == "OPTION")) { // ELEMENT_NODE == 1
if (node.getAttribute("selected")) {
selStore.appendChild(node.cloneNode(true));
}
}
}
selStore = selNode.parentNode.replaceChild(selStore, selNode);
}
}
function restoreSelection(selNode) {
if (selStore != null) {
selNode = document.getElementById("select1");
selNode.parentNode.replaceChild(selStore, selNode);
selStore = null;
}
}
</script>
</head>
<body>
<form>
<select id="select1">
<option value="1">選択肢1</option>
<option value="2">選択肢2</option>
<option value="3">選択肢3</option>
</select>
<br>
<input type="button" onclick="fixSelection()" value="選択肢を固定">
<input type="button" onclick="restoreSelection()" value="元に戻す">
</form>
</body>
</html>
fixSelection()では、
SELECT以下の構造から選択されているOPTIONのみをコピーしたSELECTエレメントを作成し、
既存のHTML中のSELECTエレメントと置き換えています。
元のSELECTエレメントの退避先がselStoreです。
restoreSelection()では逆に、selStoreに退避しておいたSELECTエレメントを元の位置に挿入しています。
DOM1については、ここではとても解説しきれないので、以下のページを参考にしてください。
基本的な考え方は、HTML文書を木構造としてとらえ、木のノードに対する操作としてHTMLの動的な変更を行うというものです。
参考URL:http://www.doraneko.org/misc/dom1/cover.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input>の選択肢をプルダウンメ...
-
プルダウン選択を変更すると、...
-
JavascriptからSQLへ繋ぎ方が分...
-
selectを変更不可にしたい
-
3つのselectでURLパラメータを...
-
連想配列を使ってコンボボック...
-
hiddenに値を設定する方法
-
全てのselect要素をデフォルト...
-
console.logがどうしても2つ機...
-
javascriptでoptionタグを削除...
-
selectの初期値を設定したい
-
selectが変更されたらnameを指...
-
Selectボックスの一覧表示方法
-
まったく同じ<select>フォーム...
-
ラジオボタンの選択に応じてプ...
-
JavaScriptで<select>の<option...
-
selectボックスの選択結果を変...
-
セレクトメニューの値をクッキ...
-
セレクトボックスで配列を呼び...
-
javascript:データを日本語で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
全てのselect要素をデフォルト...
-
【JS】selectでchangeした時の...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
複数のプルダウンを1つにまとめ...
-
コードレビューをお願いします。
-
JavaScriptで<select>の<option...
-
<input>の選択肢をプルダウンメ...
-
select要素のvalueを配列で取得...
-
selectを変更不可にしたい
-
VBScriptでHTMLのセレクトボッ...
-
ラジオボタンとプルダウンを連...
-
javascriptで合計金額を算出し...
-
中百舌鳥駅と深井駅を入れ替え...
-
同じ名前のセレクトがある場合...
-
セレクトボックスで配列を呼び...
-
今日の日付を自動的にセレクト...
-
プルダウンの値によって活性・...
-
サイト内の物件を複数の検索条...
おすすめ情報