0

2 つのドロップダウンを使用して、make/model フォームを作成しています。メーカーを選択すると、そのメーカーのモデルの適切なリストを含むモデル ドロップダウンが表示され、他のメーカーの残りのドロップダウンは非表示のままになります。私が抱えている問題は、フォームをテキスト ファイルに投稿することです。モデル フィールドを除いて、すべてのフィールドは正常にポストされます。モデル フィールドは、たまたまボルボ モデルのリストであるドロップダウンの最後で選択されたオプションを常にポストします。モデルのアクティブなリストの「car_model」への変更内で name="" 属性を作成する必要があります。

これが私が持っているコードの短い例です:

<tr>
    <td width="15%" class="label">Make:</td>
    <td class="inputd"><select id="makes" name="car_make" class="input">
        <option value="Default">Please Select</option>
        <option value="Acura">Acura</option>
        <option value="Audi">Audi</option>
        <option value="BMW">BMW</option>
    </select>
    </td>
</tr>
<tr>
    <td width="15%" class="label">Model:</td>
    <td class="inputd"><div id="car_models">
        <div id="Default" style="display:block">
          <select name="car_model">
            <option value="0">Please Select</option>
            <option value="1">Choose Make First</option>
          </select>
        </div>
        <div id="Acura" style="display: none;">
          <select name="car_model">
            <option value="0">Please Select</option>
            <option value="CL">CL</option>
            <option value="Integra">Integra</option>
            <option value="Legend">Legend</option>
          </select>
        </div>
        <div id="Audi" style="display: none;">
          <select name="car_model">
            <option value="0">Please Select</option>
            <option value="A3">A3</option>
            <option value="A4">A4</option>
            <option value="A5">A5</option>
          </select>
        </div>
        <div id="BMW" style="display: none;">
          <select name="car_model">
            <option value="0">Please Select</option>
            <option value="1 Series">1 Series</option>
            <option value="3 Series">3 Series</option>
            <option value="5 Series">5 Series</option>
          </select>
        </div>
    </td>
</tr>

divを表示/非表示にするために使用しているjavascriptは次のとおりです。

<script>
$(function () {
    $('#makes').change(function () {
        $('#car_models > div').hide();
        $('#car_models').find('#' + $(this).val()).show();
    });
});
</script> 

「car_model」という名前のドロップダウンから値を書き込むphpフォーム書き込みファイルがあるので、アクティブなときにそれを一意の名前に変更する方法を見つける必要があります。

ありがとう。

txtファイルに書き込むために使用しているコードは次のとおりです。

<?php
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$zip = $_POST['zip'];
$year = $_POST['car_year'];
$make = $_POST['car_make'];
$model = $_POST['car_model'];
$mileage = $_POST['car_mileage'];
$data = "$first_name, $last_name, $phone, $email, $zip, $year, $make, $model, $mileage
\n";
$fh = fopen("data.txt", "a");
fwrite($fh, $data);
fclose($fh);
print "Thanks";
?>
4

1 に答える 1

0

現在のコードの問題は、すべての選択リストが同じ名前を持ち、それらが表示されていなくても、すべてフォームと共に送信されることです。同じ名前の複数の変数が送信されるため、最後の変数が常に優先されます。

これを修正するには<select>、コンテナーを非表示にするだけでなく、要素を無効にします。

$('#makes').change(function () {
    $('#car_models > div').hide();
    $('#car_models select').prop('disabled', true);
    $('#car_models').find('#' + $(this).val()).show()
                    .find('select').prop('disabled', false);
});
于 2012-04-10T23:01:02.663 に答える