OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

セレクトメニューで選択不可にする方法ありますか?

  • 困ってます
  • 質問No.233298
  • 閲覧数387
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 31% (149/469)

テキストエリアの入力不可は、Javascriptできますが、
セレクトメニューを選択不可にできません。
初期状態でなく、ある条件が他で選択された時、
選択不可にしたいのですが、何か方法ございますか?

<form name=test>
<SELECT NAME="nengou">
<option value="1">昭和</option>
<option value="2">大正</option>
<option value="3">明治</option>
</SELECT>
</form>
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 61% (70/113)

DOM1を利用してよいのなら可能です。(DOM1はIE5以上、Netscape6以上でサポートされています) サンプルを書いておきます。 <html> <head> <script> selStore = null; function fixSelection(selNode, node, i) { if (selStore == null) ...続きを読む
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の動的な変更を行うというものです。
  • 回答No.2
レベル10

ベストアンサー率 61% (70/113)

失礼。もっとずっと簡単にできます。何を血迷っていたのか... <html> <head> <script> sel = 0; function force() { if (sel != 0) { document.form1.select1.value=sel; } } </script> </head> ...続きを読む
失礼。もっとずっと簡単にできます。何を血迷っていたのか...

<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>
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ