在我的表单中,我有两个下拉框。
<%= f.input :movie_code, input_html: { class: "ajax_select2", onchange: "$.movies.movieChanged(this)" } %>
<%= f.label :actor_name, required: true %>
<%= f.select :actor_code, choices, {}, {id: "actor_code_element", class: "select2"} %>
当我在第一个下拉列表中更改值时,函数 movieChanged 通过 ajax 获取电影的演员并重新填充第二个下拉列表。
movieChanged: function(element) {
var $this = $(element);
url = '/movie/' + $this.val() + '/actors/';
$.getJSON(url, null, function(data, status, xhr) {
$('#actor_code_element').empty(); //empty the list of options
$('#actor_code_element').prop("selected", false);
$.each($(data), function(index, value) {
var option = $('<option />');
option.attr('value', value.id).text(value.text);
$('#actor_code_element').append(option); //add option
});
});
}
我不能做的是在先前选择一个选项后重置第二个下拉列表的值。
例如:我选择低俗小说电影,塞缪尔·杰克逊和约翰·特拉沃尔塔出现。我选择塞缪尔。接下来我把电影改成肖申克的救赎。我重置了演员列表,但选定的演员仍然是约翰特拉沃尔塔。我想取消选择它并将其设置为空...
我正在阅读并尝试:
$('#actor_element').val('')
$('option', $('#category_code_element').attr('selected', false);
没有任何工作...
我该怎么做?
编辑:现在我意识到可能有一种 select2ish 的做事方式。我正在尝试改变它的工作方式,这可能就是它没有按预期工作的原因......在此先感谢。