0

我的选择列表针对不同的餐厅类型,因此用户可以选择一种食物类型,然后单击搜索,他们将返回他们特定食物类型搜索的列表。

我已使用以下命令成功地将选项添加到我的选择下拉列表中:

$("#edit-field-type-value").prepend("<option value=''>Type of Restaurant...</option>").val('');

但是,如果用户选择说“中国”食物并点击适用,当页面刷新时,选择列表中的选项仍然是我新添加的“餐厅类型......”,我想要的是选择保留他们的食物类型在下拉菜单中作为选定选项,在本例中为“中国”。

我的 html 目前看起来像这样:

<select id="edit-field-type-value" name="field_type_value" class="form-select">
  <option value="">Type of Restaurant...</option>
  <option value="All">- Any -</option>
  <option value="Chinese" selected="selected">Chinese</option>
  <option value="Indian">Indian</option>
  <option value="Italian">Italian</option>
  <option value="Spanish">Spanish</option>
  <option value="English">English/Traditional</option>
  <option value="American">American</option>
  <option value="Turkish">Turkish</option>
</select>

谢谢!

4

1 回答 1

1

所以,如果你和Drupal&PHP它很容易做到。
尝试类似:

<?PHP
  // First, get the selected value in a $var
  $food_type = $_REQUEST['field_type_value'];
?>

然后,您可以对选项使用循环,或者只为每个选项添加一个条件,例如:

<select id="edit-field-type-value" name="field_type_value" class="form-select">
   ...
   <option value="Chinese" <?PHP if($food_type == 'Chinese')echo 'selected="selected"'; ?>>Chinese</option>
   ...
</select>

但是......如果选项被注入jQuery......你将需要将其转换PHP $varjavascript var喜欢:

<?PHP
  $food_type = $_REQUEST['field_type_value'];
  echo '<script>var food_type = "'.$food_type.'";</script>';
?>

然后在JS循环中......

var food_type_loop = ["Type of Restaurant...", "Chinese", "Indian", "more..."]; // all your options

jQuery(document).ready(function(){
    for (var i=0 ;i<food_type_loop.length; i++) {
            $("#edit-field-type-value").append("<option value='" + food_type_loop[i] + "'>" + food_type_loop[i] + "</option>").val(food_type_loop[i]);
            // reach to the end... now select th proper one
            if(i+1 == food_type_loop.length) select_the_food();
    }
});

function select_the_food(){
    $('#edit-field-type-value option[value="'+food_type+'"]').prop('selected', true);
}

jQ 的小提琴示例http://jsfiddle.net/gmolop/hWKkL/1/

于 2013-08-20T11:00:59.247 回答