阻止选中的<option> -tag被.html()

时间:2016-04-19 20:50:56

标签: php jquery html ajax

我有一个PHP文件,可以从数据库中获取汽车品牌行,并将其作为"<option value=\"$brand\">" . $brand . "</option>";回显,并将它们放入预先编写的<select>标记中。

我的问题是,选择框中显示的第一个项目未向前传递其值。

此事件更改了选择框的值

$('select[name=model]').on('change', function() {
  selectedModel = $("#select-model").val()
});

<option> - 标记由brands.php

中的此循环生成
while ($row = mysqli_fetch_array($result)) {
  $brand = $row['brand'];
  echo "<option value=\"$brand\">" . $brand . "</option>";
}

这个功能取代了这些品牌:

function fetchBrands() {
  $.ajax({
    type: "POST",
    url: "script/rent/brands.php",
    data: {dateFrom: selectedDateFrom, 
           dateTo: selectedDateTo, 
           destination: selectedDestination},

    success: function(data) {
        $("#select-brand").html(data);
      }
  });
}

由于数据已发布到#select-brand .html(),因此无法为选择框设置默认值,因为它会被覆盖。附加选项将导致重复等因为fetchBrands()取决于之前的一组单选按钮和选择框。

1 个答案:

答案 0 :(得分:1)

我现在建议的是,在您的成功函数中,添加一些代码来获取select标记中的第一个元素,更新selectedBrand,然后触发附加的代码改变事件。 如果您重构代码以便添加对处理程序代码的引用,这将使其更容易。

$('select[name=model]').on('change', someFunction());

function someFunction(){
    selectedModel = $("#select-model").val()
}

function fetchBrands() {
  $.ajax({
    type: "POST",
    url: "script/rent/brands.php",
    data: {dateFrom: selectedDateFrom, 
           dateTo: selectedDateTo, 
           destination: selectedDestination},

    success: function(data) {
        $("#select-brand").html(data);
        $("#select-brand").val($("#select-brand option:first").val());
        someFunction();
      }
  });
}

在添加额外信息之前:

要在页面呈现时自动选择<select>...</select>元素,您需要将属性selected="selected"添加到要选择的<option />

或者,添加一个用于设置所选品牌的文档加载的挂钩。

或者,第一个选项是这样的:

<option disabled="disabled" selected="selected">Choose a Brand</option>