如何根据在另一个</option> </select>中选择的<option>更改<select>的name属性?

时间:2012-04-10 22:50:10

标签: javascript forms select

我正在制作一个制作/模型表格,有两个下拉菜单。选择make时,会显示带有相应模型列表的模型下拉列表,另一个下拉列表的下拉列表将保持隐藏状态。我遇到的问题是将表单发布到文本文件。除了模型字段之外,所有字段都很好地发布,模型字段总是发布在最后一个下拉列表中选择的选项,这恰好是沃尔沃模型的列表。我需要将更改为“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> 

我有php表单编写文件,使用名称为“car_model”的下拉列表写入值,因此我需要找到一种方法,在活动时将其更改为唯一名称。

感谢。

这是我用来写入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";
?>

1 个答案:

答案 0 :(得分: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);
});
相关问题