質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

ラジオボタンに対するjavaScriptのチェック処理

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,705

strokes_1954

score 30

はじめまして。
以下のようなラジオボタンに対し、選択肢1に対するチェック状態をtrueにするようなjavaScript
を実装したいと考えています。

<h:inputHidden>
  <f:viewParam name="select" value="#{SomeBean.select}" id="select"/>
</h:inputHidden>
<span class="label-txt">
  <div class="radio">
    <input id="1" name="select" class="radio__input" type="radio" value="0" />
    <label for="1" class="checkbox" ><span class="image"></span>選択肢1</label>
    <input id="2" name="select" class="radio__input" type="radio" value="1" />
    <label for="2" class="checkbox"><span class="image"></span>選択肢2</label>
  </div>
</span>

現在のところ、下記のようなjavascriptを実装していますが、実行しても
うまくチェック状態になってくれません。

 function writeKoumoku() {
//試したもの1
document.getElementById("1").checked = true;
//試したもの2
$('#1').prop('checked',true);
}

トリガーとなるボタンは以下のように実装しています。

<input type="button"  class="button grid-09-px button__function button__function--slim" value="打鍵補助用スクリプトの実行" onclick="writeKoumoku()"/>

どなたか知識のある方、選択肢1の状態をcheckedにするjavascriptの実装方法をご教授ください。

■追記
⇒上記のxhtml内にボタンを配置し、押下時にonclick属性でjavaScriptを実行し、チェック状態にしたいと考えています。

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • x_x

    2017/08/23 13:37

    onclick属性がないようですが?

    キャンセル

  • strokes_1954

    2017/08/23 13:39

    申し訳ございません。onclick属性のボタンに関しては省略して書いていましたので、修正させていただきます。

    キャンセル

  • kei344

    2017/08/23 13:51

    jsfではなく出力されたHTML(ブラウザで「ページのソースを表示」)を質問文に追記ください。

    キャンセル

回答 4

+1

試したもの1で可能かと思いますが...一度以下のようにして試していただけませんか?

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>タイトル</title>
</head>
<body>
<div class="label-txt"><!-- 文法的にNG -->
    <div class="radio">
        <input id="1" name="select" class="radio__input" type="radio" value="0"/>
        <label for="1" class="checkbox"><span class="image"></span>選択肢1</label>
        <input id="2" name="select" class="radio__input" type="radio" value="1"/>
        <label for="2" class="checkbox"><span class="image"></span>選択肢2</label>
    </div>
</div>
<script>
    document.addEventListener("DOMContentLoaded", function () {
        document.getElementById("1").checked = true;
    });
</script>
</body>
</html>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/23 02:26

    申し訳ございませんでした。試したところ、失敗いたしました。jsfタグが悪さしている可能性がありますね・・

    キャンセル

  • 2017/08/23 02:29

    質問文のコードをそのまま実行してみた場合はどうなりますか?また、他の箇所でid属性の1という値を使用していませんか?

    キャンセル

+1

id属性は数字から始めてはいけないことになっています(参考)。

id='1'を、英字始まりの値に変えればうまくいくかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/23 11:21

    HTML5から大丈夫みたいですよ。

    【HTML Standard 日本語訳】
    https://momdo.github.io/html/dom.html#global-attributes
    > IDを取ることができる形式に制限は存在しない。具体的に、IDは数字のみまたは句読点のみで構成することができ、数字やアンダースコアで開始できる、などである。

    キャンセル

  • 2017/08/23 11:31

    あら、そうだったんですね。ありがとうございます。

    キャンセル

  • 2017/08/23 14:05

    CSSセレクタとして使えないのではないですか?
    https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
    > they cannot start with a digit, two hyphens, or a hyphen followed by a digit.
    (識別子は、数字、2つのハイフン、ハイフンの直後の数字で開始できない。)

    キャンセル

  • 2017/08/23 15:18

    To: x_xさん
    そうですね、新しい仕様で上書きされていないかいくつか見てみましたが、その部分は書き換わっていないようでした。「HTML5では"0"をidに指定できるがCSSからは(仕様的に)参照できない」ということなのですね・・・。

    試してみると、Win Firefox/Chrome/IE でJavaScriptでの取得ができました。そしてCSSは当然効きませんでした。
    https://jsfiddle.net/oubwuj02/

    キャンセル

+1

idの付け方がおかしいのは既にご指摘があるとおりですが
ラジオボタンは必ずnameが設定されているはずですのでこうしてもよいかもしれません

document.querySelector("[name=select]:first-child")["checked"]=true;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

問題のある記述があるものの、現行ブラウザでは動作するのでわからなかったのですが、ここにきて判明しました。
単純なことですが、打ち間違いです。

//試したもの2
$('#1').prop('checked',true);
// } // 全角
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる