ラジオボタンを大きく押しやすくする

ラジオボタンは、択一選択する場合に重宝するフォームです。
いろいろなお問い合わせフォームでもよく目にします。

このラジオボタン、小さい丸い部分をクリックすると選択されます。
マウスで操作する分にはさほど気になりませんが、スマホで操作する場合押しにくいです。
スマホで画面が小さくなる分、ラジオボタンの丸い部分も小さくなるためです。

これを何とかするためには、ラジオボタンを大きくすればよいと考えました。
しかし、ラジオボタンの丸い部分って、スタイルシートで大きくはなりませんでした。

ならばと、ラジオボタンを囲う枠をつくり、枠クリックでラジオボタンを動作させればよいと考えました。

最近のフォームのラジオボタンはこの手法で押しやすくなっています。
どうやれば実現できるか調べ、やってみました。

まずはできたものがこちら

論より証拠で、実際にラジオボタンの枠クリックで動作するサンプルがこちらです。

3つのボタンがあり、クリックすると色反転します。
これだとスマホでも押しやすくなります。

事実、スマホで表示すると指で押しやすくなりました。

ただここで疑問がでます。
ラジオボタンではない部分をクリックして、どうやってラジオボタンを動作させているのだろう?

という点です。
この部分について解説いたします。

スタイルシートで作ったボタンをラジオボタン化する方法

ただのボタンを作る場合は、スタイルシートで調整すれば容易にできます。
ただ、そのボタンを押したらラジオボタンが動作するようにするには、ひと手間必要です。

具体的にはJqueryで、ボタンが押されたらラジオボタンも押すということをやります。

順を追って解説いたします。

(1)今回のソース

今回のソースです。

(2)ラジオボタン部分のソース

ラジオボタンをULタグ、LIタグで囲っています。
LIタグをスタイルシートでボタン風に見せています。
LIタグをクリックしたら、ラジオボタンが反応するようにします。

(3)LIタグクリックでラジオボタンが反応する部分

動作解説

具体的にLIタグをクリックすることで、ラジオボタンを反応させているのかについて解説いたします。

(1)LIタグクリックを認識

JqueryでLIタグがクリックされたかどうかを判定しています。
$(“.radio_select li”)部分は、コーディングによって書き換えます。

function(obj)のobjは省略記述もOKですが、firefoxブラウザの場合スクリプトエラーになることがあるため、objの記述があったほうが無難です。

(2)クリックしたLIタグ内のラジオボタンをクリック状態にする

クリックされたLIタグ内のラジオボタンをチェック状態にします。
LIタグの子要素になるため、childrenで該当ラジオボタンを指定しています。
事実上この1文でラジオボタンを制御しています。

(3)ラジオボタン外周の色を変える(スタイルシート調整)

この部分は、ラジオボタンクリックで周囲の色が変わる部分を制御しています。
具体的には、色の変わるスタイルシートを用意し、一旦全部の背景色をクリアにしてから、クリックされたLIタグに、色を変えるスタイルシートを付け加えています。

parentで、いったん上位に上がりchildrenで下位に下がっているのは、全てのLIタグを指定するためです。これをやらないとクリックしたLIタグのみが対象になります。

addClass(スタイルシートのつけたし)とremoveClass(スタイルシートの解除)でON/OFFを切り替えています。

ラジオボタンの場合は思ったより簡単ですが、チェックボックスの場合は複雑になります

ラジオボタンは、クリックしたら他のラジオボタンは強制的にOFFになります。
つまり、ラジオボタンをOFFにする処理をJqueryで組まなくてもよいのです。

ONにする処理だけ作ればよいので、Jqueryも数行で済みます。

ところがチェックボックスの場合だと、JqueryでOFFにする処理を組まなければいけません。

チェックボックスも、ラジオボタン同様そのままだとスマホで押しにくいです。
これを何とかするためには、今回同様スタイルシートでボタンを作り、ボタンクリックでチェックボックスが動作するようにしなければいけません。

このやり方については改めて解説いたします。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております