-3

重複の可能性:
<option>ではなく<select>タグ内で選択を定義する任意の方法

ユーザーの2文字の国コードを格納する$countryがあります。たとえば米国。

<select id="countries">                     
    <option value="US">United States</option>
    <option value="EN">England</option>
    <option value="AU">Australia</option>
    <option value="CA">Canada</option>
    etc.
</select>

ユーザーの国コードのオプションに「選択済み」を追加するためのベストプラクティスは何ですか?

もしそうなら、私は百万を追加することに反対です。また、国はHTMLでハードコーディングされているため、配列はありません。:(

4

5 に答える 5

1

PHP の場合:

$options = '<option value="US">United States</option>
    <option value="EN">England</option>
    <option value="AU">Australia</option>
    <option value="CA">Canada</option>';

$code = "CA";
$pattern = sprintf('/value="%s"/m', $code);
$replace = sprintf('value="%s" SELECTED', $code);
$out = preg_replace($pattern, $replace,$options);

printf('<select id="countries">%s</select>', $out);

出力:

<select id="countries">
    <option value="US">United States</option>
    <option value="EN">England</option>
    <option value="AU">Australia</option>
    <option value="CA" SELECTED>Canada</option>
</select>

基本的には、すべてのoptionタグを巨大な PHP 文字列にダンプし、正規表現検索を実行して置換しSELECTED、適切な場所に追加するだけです。

于 2012-06-27T03:18:00.620 に答える
0

あなたの最善の策は、javascriptでそれを行うことです

$('#countries').val('<?=$country?>');

これにはjqueryが必要ですが、バニラのjavascriptで実行できます

document.getElementById('countries').value = '<?=$country?>';
于 2012-06-27T03:08:30.823 に答える
0

配列を使用してオプションを設定しない限り、PHP での解決策は思い通りにはなりません。

JavaScript では、選択した値を設定する小さな関数を作成できます (jQuery を使用していないと仮定します)。

function setOption(id, value)
{
    var selectBox = document.getElementById(id),
    options = selectBox.options;

    for (var i in options) {
        if (options[i].value == value) {
            selectBox.selectedIndex = i;
            return;
        }
    }
}

次に、PHP を使用して、選択ボックスの後にスクリプト タグを作成します。

<script>setOption('countries', '<?php echo 'US'; ?>');</script>
于 2012-06-27T03:18:30.043 に答える
0

この回答は無視してください: 私はすべての質問を読んだわけではありません:(

これを処理する方法は、すべての国の配列を作成してから、$_POST または保存された値を foreach ループの値に対してテストすることです。

$countries = array("US" => "United States", "EN" => "England");

次に、次の形式で:

<?php foreach ($countries as $abbr => $display): ?>
  <?php if (array_key_exists($result['country'], $countries)): ?>
    <option value="<?php echo $abbr; ?>" selected="selected"><?php echo $display; ?></option>
  <?php else: ?>
    <option value="<?php echo $abbr; ?>"><?php echo $display; ?></option>
  <?php endif; ?>
<?php endforeach; ?>
于 2012-06-27T03:21:32.837 に答える
-2

私はこれについての専門家ではありませんが、これが解決策かもしれないと思います

<select id="countries">                     
    <option value="US" <?php if($country=='US') echo 'selected'; ?> >United States</option>
    <option value="EN" <?php if($country=='EN') echo 'selected'; ?> >England</option>
    <option value="AU" <?php if($country=='AU') echo 'selected'; ?> >Australia</option>
    <option value="CA" <?php if($country=='CA') echo 'selected'; ?> >Canada</option>
    etc.
</select>
于 2012-06-27T03:12:06.427 に答える