0

5 つのラジオ ボタンがあり、ページを開いたときに 1 つのデフォルトがチェックされている状況があります。これらのラジオ ボタンは 5 つのカテゴリを表します。各カテゴリ内には、いくつかのサブカテゴリ送信ボタンがあります。サブカテゴリ ボタンは、現在ラジオ ボタンで選択されているカテゴリのボタンを除いて非表示になります。

ユーザーがラジオ ボタンを使用してカテゴリを選択し、サブカテゴリの 1 つから選択できるようにしたいのですが、($_POST 要求から) ページを更新すると、「現在の」カテゴリのラジオ ボタンがチェックされたままになります。現在のところ、ページはサブカテゴリ送信の送信で更新され、ラジオはデフォルトで最初のラジオ ボタン カテゴリにチェックされています。

ラジオ非表示コンテナー アクションを調整する JavaScript があるため、フォーム タグは 5 つのラジオ ボタンすべてをカバーしているように見える必要があり、5 つのラジオ ボタンはすべて同じ名前であり、基になる JavaScript のために変更できません。そのため、セッションなどに応じて、PHP の各ラジオの名前とコードを単純に変更することはできません。

私は実際に $_POST 送信にとどまるようにカテゴリを取得しましたが、ラジオ タグでセッション変数を使用して、checked を見つけましたが、各ラジオとそれぞれのサブカテゴリ セクションを独自のフォーム タグ内にカプセル化する必要がありました。これはもちろん JavaScript に問題を引き起こし、ラジオ ボタンは一度押すと二度と押すことができなくなります。

PHPを使用してこれを解決する方法はありますか?

どんな助けでもいいでしょう。前もって感謝します。

4

1 に答える 1

2

クラスでこれを行う必要がありましたが、少し面倒です。ページの読み込み時に、チェックされた項目の値を変数 (この場合は $val) に取り込みます。各入力項目に対してこれをインラインにします。

<input type="radio" ... value="someval" <?php $x = ($val=='someval' ? 'checked="checked"' : ''); echo $x; ?> />

私が言ったように、面倒ですが、正しいアイテムをチェックします。唯一のことは、値がまだ選択されていない場合にチェックされるようにデフォルト設定されるため、最初の項目にさらに if ロジックが必要であるということです。

<input type="radio" ... value="firstval" <?php $x = ((empty($val)) || ($val=='firstval')) ? 'checked="checked"' : ''; echo $x; ?> /> //removed extra bracket

必要に応じてきれいにすることができます。これはインライン専用でした。

于 2013-01-29T19:28:08.343 に答える