Jquery 为\u选择动态更新选项\u
我想根据在第一个选择选项上选择的内容填充第二个选择选项。我知道如何使用传统的jquery和html来实现它。但我想知道是否还有其他方法,我只需更新选项就可以了 如您所见,我在第一个选项中有一个辅助函数city_for_select。我想对第二个也使用同样的方法。我将感谢任何帮助。比你强Jquery 为\u选择动态更新选项\u,jquery,html,ruby-on-rails,Jquery,Html,Ruby On Rails,我想根据在第一个选择选项上选择的内容填充第二个选择选项。我知道如何使用传统的jquery和html来实现它。但我想知道是否还有其他方法,我只需更新选项就可以了 如您所见,我在第一个选项中有一个辅助函数city_for_select。我想对第二个也使用同样的方法。我将感谢任何帮助。比你强 <div class="col-md-4"> <%= f.label t('city'), class: "form-control-label" %><br>
<div class="col-md-4">
<%= f.label t('city'), class: "form-control-label" %><br>
<%= f.select :city, options_for_select(city_for_select), {}, class: "form-control", id: "city" %>
</div>
<div class="col-md-4">
<%= f.label t('area'), class: "form-control-label" %><br>
<%= f.select :area, options_for_select(["Plz select"]), {}, class: "form-control", id: "area" %>
</div>
您必须将第二个选项提取到控制器方法中。然后,当第一次选择更改时,使用一些JS调用所述方法。使用jQuery替换/设置第二个选项的HTML 就像你说的。与传统HTML/jQuery的原理相同,但HTML将来自rails控制器 控制器:
def update_select
# Your query here
# Populate @t
end
查看更新_select.js.erb:
$("#sencond_select").html("<%= j render partial: 'update_select' %>");
部分更新选择.html.erb:
<div class="col-md-4">
<%= label_tag t('area'), nil, class: "form-control-label" %><br>
<%= select_tag :area, options_for_select(["Plz select"]), class: "form-control", id: "area" %>
</div>
您必须将第二个选项提取到控制器方法中。然后,当第一次选择更改时,使用一些JS调用所述方法。使用jQuery替换/设置第二个选项的HTML 就像你说的。与传统HTML/jQuery的原理相同,但HTML将来自rails控制器 控制器:
def update_select
# Your query here
# Populate @t
end
查看更新_select.js.erb:
$("#sencond_select").html("<%= j render partial: 'update_select' %>");
部分更新选择.html.erb:
<div class="col-md-4">
<%= label_tag t('area'), nil, class: "form-control-label" %><br>
<%= select_tag :area, options_for_select(["Plz select"]), class: "form-control", id: "area" %>
</div>
这是另一种做事方式。在添加控制器函数和相关路由之后,我使用jquery和json调用函数并在select选项中加载。不需要在这里渲染分部 控制器:请注意,您必须以json格式返回数据 Javascript:
function populate_area(city_name){
$.get("/get_area_for_city", {city: city_name}, function(data){
var $area = $('#area');
$area.empty();
for (var i = 0; i < data.areas.length; i++) {
$area.append('<option value=' + data.areas[i] + '>' + data.areas[i] + '</option>');
}
}, "json");
}
$(document).ready(function () {
$("#city").change(function () {
var val = $(this).val();
if (val == "city1") {
populate_area("city1");
} else if (val == "city2") {
populate_area("city2");
} else if (val == "city3") {
populate_area("city3");
}
});
});
问题中已经给出了HTML。这是另一种处理问题的方法。在添加控制器函数和相关路由之后,我使用jquery和json调用函数并在select选项中加载。不需要在这里渲染分部 控制器:请注意,您必须以json格式返回数据 Javascript:
function populate_area(city_name){
$.get("/get_area_for_city", {city: city_name}, function(data){
var $area = $('#area');
$area.empty();
for (var i = 0; i < data.areas.length; i++) {
$area.append('<option value=' + data.areas[i] + '>' + data.areas[i] + '</option>');
}
}, "json");
}
$(document).ready(function () {
$("#city").change(function () {
var val = $(this).val();
if (val == "city1") {
populate_area("city1");
} else if (val == "city2") {
populate_area("city2");
} else if (val == "city3") {
populate_area("city3");
}
});
});
问题中已经给出了HTML。你好,罗斯兰,谢谢你的回答。但这就是我被困的地方。您知道用jquery更新选项的确切代码是什么吗?我试过类似的东西$area.options\u用于\u selecthelper\u功能,不起作用。您好,非常感谢。我实际上是在尝试或寻找不同的东西。看看我的答案。这与我调用控制器函数的意义相同。但加载数据部分有点不同。让我知道你的想法?嗨,罗斯兰,谢谢你的回答。但这就是我被困的地方。您知道用jquery更新选项的确切代码是什么吗?我试过类似的东西$area.options\u用于\u selecthelper\u功能,不起作用。您好,非常感谢。我实际上是在尝试或寻找不同的东西。看看我的答案。这与我调用控制器函数的意义相同。但加载数据部分有点不同。让我知道你的想法是什么?这是一个比我更好的方法,因为你可以很容易地交换视图层,或者更容易地移动到js框架,而不涉及返回的部分等等。做得好!非常感谢。我很欣赏你的意见:非常干净和简单的解决方案,我喜欢这种方法。这是一种比我更好的方法,因为你可以轻松地交换视图层,或者更容易地移动到js框架,而不必触及返回的部分等等。做得好!非常感谢。我感谢您的意见:非常干净和简单的解决方案,我喜欢这种方法。