在我的表格中,我有两个下拉框。
<%= 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获取电影的actor并重新填充第二个下拉列表。
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
});
});
}
我不能做的是在先前选择一个选项后重置第二个下拉列表的值。
例如:我选择了Pulp Fiction电影,Samuel L Jackson和John Travolta出现。我选择塞缪尔。接下来我将电影改为ShawShank Redemption。我重置了演员名单,但选定的演员仍然是约翰特拉沃尔塔。我想取消选择并将其设置为null ...
我正在读书并尝试:
$('#actor_element').val('')
$('option', $('#category_code_element').attr('selected', false);
没有用......
我该怎么办?
编辑:现在我意识到可能有一种选择性的做事方式。我正试图改变它的工作方式,这可能就是为什么它没有按预期工作的原因...... 提前谢谢。答案 0 :(得分:1)
答案 1 :(得分:1)
$('#actor_element').val([])
应正确重置选择。
编辑:啊,错过了你使用了select2。
我要测试
$('#actor_element').trigger('change')
看看是否有诀窍。