2014-01-13 86 views
0

我有一個窗體來創建新的對象,它可以通過選擇2添加多個關鍵字。設置多個選擇2選項

我使用Symfony;關鍵字取自一個實體。在Select2列表中添加現有的關鍵字可以很好地工作。

現在我想給用戶添加全新關鍵字的可能性,並且這些新關鍵字直接出現在Select2列表中。

所以我在我的「新對象窗體」上創建了一個「添加關鍵字」按鈕,這導致了「新關鍵字」窗體(Bootstrap模式窗口)。

的JavaScript用來添加新創建的關鍵字的選擇二列表如下:

function OnSuccess(result){ 
    var keywordsSelected = new Array($("#object_keywords").select2("val")); 
    $('#object_keywords').append('<option value="'+result.id+'" selected="selected">'+result.name+'</option>'); 
    keywordsSelected.push(result.id); 
    $("#object_keywords").select2("val", keywordsSelected); // 
    $('#addKeyword').modal('hide'); 
} 

現在奇怪的事情:

  • 我點擊我的「添加關鍵字」按鈕,我在「新關鍵字」表格中填寫新關鍵字的名稱,我驗證,新關鍵字被添加到Select2列表中 - >一切正常
  • 我再次做同樣的事情 - >一切都很好,第二個新關鍵字被添加到Select2列表中接近前一個
  • 我第三次做同樣的事情...第三個關鍵字被添加但兩個第一個消失 !!

此追加即使2最前一頁是「老」的關鍵字已經存在的數據庫,但如果我只加「老」的關鍵字(我可以添加多達我想)這不追加。

你有什麼想法可以從哪裏來的問題?

回答

0

嗯......

我繼續尋找有緣,我發現一些東西,似乎工作(即它沒有,但我沒有找到的情況下)。

我改了行的順序,並增加了一個「明確的選擇二」指令:

function OnSuccess(result){ 
    $('#addKeyword').modal('hide'); 
    $('#webobs_eventbundle_event_keywords').append('<option value="'+result.id+'" selected="selected">'+result.name+'</option>'); // Add the new Keyword in the list 
    var keywordsSelected = $("#webobs_eventbundle_event_keywords").select2("val"); 
    keywordsSelected.push(result.id); 
    $("#webobs_eventbundle_event_keywords").select2("val", null); 
    $("#webobs_eventbundle_event_keywords").select2("val", keywordsSelected);  
} 

不管怎麼說,我還是對你有興趣瞭解這個問題的看法,因爲我實在不明白的原因爲什麼這個代碼有效,而不是第一個...