39392


# 質問：

ラジオボタンというものは、画面を開いた際からいづれかのアイテムが選択された状態になってしまう、  
かつ、見た目とは異なる状態になってしまうものなのでしょうか？  
（コーディングで初期値のような制御をしない限り、意図した選択にならない？？）  
無指定を検知しようとしていることが間違っている、はたまた、無指定にはみえない現況のコーディングに問題があるのでしょうか？

ＰＨＰで、ＤＢからの内容取得で動的に生成されるラジオボタンの羅列があります。  
当該画面を開いた際に、ブラウザ（ＩＥ）の開発ツール：DOM EXPLOREで見た限り、  
以下のような感じでＨＴＭＬは仕上がっています。

実際の画面側でも、【無指定＝一切どのアイテムも選択されていない状況】に見えます。

[code]

    <div class="ctrl">
        <input name="dtype" type="radio" value="Z1">あ　
        <input name="dtype" type="radio" value="Z2">い　
        <input name="dtype" type="radio" value="Z3">う<input name="thema" type="text">　
        <input name="dtype" type="radio" value="Z4">え　
    </div>
    
[/code]

このラジオボタンの羅列から、画面の利用者が一切アイテムを選択していないケースの  
エラーを検知しようとしていますが（以下JSのとおり）、なぜか既に一番左のアイテムが選択されているかのような動作をしています。（Console.logやalertで『$("input[name=dtype]:checked").val()』でも確認）

===↓ 動作してくれない（条件式を!=にすると動作 = 見た目と違い選択されている?!）===

[code]

    if ($("input[name=dtype]:checked").val() == "") {
        errhandler($("input[name=dtype]"), true, "err#020");
        return false;
    }
    
[/code]

いつも初歩的なことで申し訳ありませんが、ご見解をよろしくお願い申し上げます。


CC BY-SA 3.0
2017-11-07T13:19:16.140
39385
2017-11-07T15:45:41.627
2020-06-17T08:14:45.997
-1
25696
question
javascript html jquery
ラジオボタン無指定の状況を捉えようとしているが、画面と異なり既に選択されている？！


何も選択されていないことを調べるならば、以下のような方法はどうでしょう。

[code]

    var checkedItems = $("input[name=dtype]").filter(function() {
        return $(this).prop("checked");
    });
    if (checkedItems.length == 0) {
        何も選択されていない場合の処理
    }
    
[/code]


CC BY-SA 3.0
2017-11-07T15:25:16.657
39390
2017-11-07T15:25:16.657
26093
39385
answer


type="radio" の valueは値が予め設定されているので.valで確認すると一番先頭（０番目の要素）の値を返しているようです。  
どれも選択されてないか確認するもう一つ方法

[code]

     if(!$('input[name=dtype]').is(':checked')){alert("選択されていません")};
    
[/code]


CC BY-SA 3.0
2017-11-07T15:45:41.627
39392
2017-11-07T15:45:41.627
22793
39385
answer