0

私は今日、PHP フォームに取り組んでおり、<select> & <option>タグに関するヘルプが必要です。私がやりたいこと$_GETは、すでに<option>リストにある値を取得し、それをインデックスとして表示することです。私のフォームの仕組みは、ユーザーが場所を選択して更新ボタンを押すというものです。ページが送信されると、値が送信され、$_GETそれを使用してデータベースから正しい情報が取得されます。上記の情報を見た後、必要な場所で削除するオプションがあります。問題は、場所を削除するために場所を再選択する必要があることです。選択したままにする値が必要です。

たとえば、ユーザーが選択ボックスで [NJ] をクリックし、[更新] をクリックしたとします。ページが送信され、たとえば、レストランのレビューが表示されます。ユーザーが変更するまで、選択ボックスに NJ の値を保持させたいと思います。

私の簡単な修正は、<option>リストの先頭で次のコードを使用することでした。

<?php
    if($_GET['chooseLocation'])
        echo "<option>$_GET['chooseLocation']</option>";
?>

これの唯一の欠点は、NJ が 2 回表示されることです。

1) 私は正しい道を進んでいますか?

2) $_GETURL に情報を使用して保存しているため、代わりに JavaScript を使用してこれを行う必要がありますか?

約 15 の質問に目を通しましたが、どれも私の質問に答えてくれませんでした。これが再投稿またはコピーであると思われる場合は、コメントにオリジナルを投稿してください。

4

2 に答える 2

2

私はあなたのコード全体を知りません。その小さな部分だけです。私が通常これを行う方法は、selected属性とアイテムの何らかの ID を使用することです。データベースから情報を読み取っていると思いますが、ページからページへと維持する情報はオプションの値です。私はこのようなことをします:

<?php
for( $i = 0; $i < count($options); ++$i ) {
    echo "<option";
    if( $_GET['chooseLocation'] && $_GET['chooseLocation'] == $options[$i] ) {
        echo "selected";
    }
    echo ">{$options[$i]}</option>";
}
?>

または、事実上すべてのユーザーが現在 JavaScript を使用していると想定することもできます。selectedしたがって、DOM の準備が整ったとき、またはページがロードされたとき (jQuery を使用するなど) に属性を「アタッチ」することで、JavaScript で実際に同じことを行うことができます。もちろん、JavaScript の使用を拒否する少数派はまだいますが、現時点で統計はありません。

于 2013-01-15T18:43:26.033 に答える
1

今と同じように通常どおりフォームを送信できますが、関数を添付します。

<form obsubmit="return stay_freeze()" .. >

そしてあなたの選択にIDを与えます

function stay_freeze(){
    var opt = $("option[val=ID]");
    opt.attr('selected','selected');​​ 
}

それでおしまい!

または選択されたものをキャッチしてこれを行います:

function stay_freeze() {
  var catched_value = $('#your_select_id').val();
  $('#your_select_id').val(catched_value);
}
于 2013-01-15T18:44:34.190 に答える