2013-04-05 75 views
0

在我的表格中,我有兩個下拉框。滑軌 - 重置選擇

<%= 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 
     }); 
    }); 
    } 

我不能做的是在先前選擇了一個選項後重置第二個下拉列表的值。

例如:我選擇了Pulp Fiction電影,Samuel L Jackson和John Travolta出現。我選擇塞繆爾。接下來,我將電影改爲ShawShank Redemption。我重置了演員名單,但選定的演員仍然是約翰·特拉沃爾塔。我想取消選擇它,並將其設置爲null ...

我讀周圍和嘗試:

$('#actor_element').val('') 
$('option', $('#category_code_element').attr('selected', false); 

實在不行......

我該怎麼辦呢?

編輯:現在我意識到可能會有select2ish做事的方式。我試圖改變它的工作方式,這可能是爲什麼它沒有按預期工作... 在此先感謝。

+0

我的意思是val('')。更新了答案。你告訴我的作品(該值在之後爲空,但該項目仍然顯示)。 – 2013-04-05 10:45:42

回答

1

清空select和set屬性,並在需要時啓用它。

試試這個

$('#actor_element').empty().attr('disabled','disabled'); 

fiddle

0
$('#actor_element').val([]) 

應正確復位的選擇。

編輯:啊,錯過了你用過select2。

我測試

$('#actor_element').trigger('change') 

,看看有沒有做的伎倆。