0

データベースからユーザー情報を取得し、これに基づいて、case ステートメントを使用して正しいインデックス値を決定できます。

<?php
    $genderIndex = 0;
    switch ($displayProperties['gender']) 
    {
        case "":
            $genderIndex = 0;
            break;
        case "Male":
            $genderIndex = 1;
            break;
        case "Female":
            $genderIndex = 2;
            break;
        case "Other":
            $genderIndex = 3;
            break;
    }
 ?>

フォームに HTML ドロップダウン (選択) があります。

<select name="gender" selectedIndex="<?php echo $genderIndex; ?>">
    <option value="0"> </option>
    <option value="Male">Male</option>
    <option value="Female">Female</option>
    <option value="Other">Other</option>
</select><br/>

問題は、それが機能せず、常にページをロードすることであり、実際に期待値があるindex=0かどうかを確認しました(そうです)。$genderIndex

私は何を間違っていますか?

4

3 に答える 3

2

selectedindex プロパティはこのようには使用されません。selectedindex プロパティを適切に使用するには、http://www.w3schools.com/jsref/prop_select_selectedindex.aspを参照してください。

代わりに、「選択された」属性を適切なオプションに適用しています。以下のコードは、省略形の if/else チェックを実行し、指定された関数で作成した $genderIndex に基づいて、必要に応じて「selected」属性を適用します。

<select name="gender">
    <option value="0" <?php echo ($genderIndex==0)?('selected'):(''); ?>"> </option>
    <option value="Male" <?php echo ($genderIndex==1)?('selected'):(''); ?>>Male</option>
    <option value="Female" <?php echo ($genderIndex==2)?('selected'):(''); ?>>Female</option>
    <option value="Other" <?php echo ($genderIndex==3)?('selected'):(''); ?>>Other</option>
</select><br/>
于 2012-11-19T20:44:36.550 に答える
1

これが機能しない理由は、selectedIndex<select/>が HTML要素の有効な属性ではないためです。( http://www.w3.org/TR/html4/interact/forms.html#h-17.6を参照)

要素のオプションを事前に選択するには<select/>(最初のオプション以外で、この値は空です)、HTML 出力を次のようにする必要があります。

<select name="gender">
<option value="0"> </option>
<option value="Male">Male</option>
<option value="Female" selected="true">Female</option>
<option value="Other">Other</option>
</select>

2 番目のタグにselected="true"が追加されていることに注意してください。<option/>次のようなものは仕事を成し遂げますが、エレガントではありません。

<select name="gender">
<?php
if(0 == $genderIndex)
    echo '<option value="0" selected="true"> </option>';
else
    echo '<option value="0"> </option>';

if(1 == $genderIndex)
    echo '<option value="Male" selected="true">Male</option>';
else
    echo '<option value="Male">Male</option>';

if(2 == $genderIndex)
    echo '<option value="Female" selected="true">Female</option>';
else
    echo '<option value="Female">Female</option>';

if(3 == $genderIndex)
    echo '<option value="Other" selected="true">Other</option>';
else
    echo '<option value="Other">Other</option>';
?>
</select>

ここでは、優れた Web フレームワークが役立ちます。Java では、Struts フレームワークが、適切に選択された<select/>タグを出力にエコーするのを支援することを知っています。<option/>

于 2012-11-19T20:56:39.510 に答える
0

<option>これは、HTMLで選択したものを指定する方法ではありません。次のようselectedに、それ自体に属性が必要です。<option>

<select name="gender">
    <option value="0"> </option>
    <option value="Male" selected>Male</option>
    <option value="Female">Female</option>
    <option value="Other">Other</option>
</select><br/>
于 2012-11-19T20:41:33.537 に答える