[js]input:radioの値は数字にしても文字列扱いになる

php触ってるとjsでおかしくなる。

どういうことか

こういうものがあったとする。

<label><input type="radio" name="select" value="1"><span>radio1</span></label>
<label><input type="radio" name="select" value="2"><span>radio2</span></label>
<label><input type="radio" name="select" value="3"><span>radio3</span></label>
<label><input type="radio" name="select" value="4"><span>radio4</span></label>

jsで選択されている値を取得して、条件分岐を作りたい。

NG

if( $('input[name="select"]:checked').val() === 1 ){ ... }else{ ... }

なぜかは正解を見たら分かる。

OK

if( $('input[name="select"]:checked').val() === '1' ){ ... }else{ ... }

つまり、valueは「数字だろうが文字列扱い」なのだということ。

どうしても”で囲いたくなければNumber()とかで数値扱いに変えましょう。
そんな事する必要あんまりないと思うけどね。

コメント

タイトルとURLをコピーしました