2017-10-10 115 views
0

我有以下Bootstrap Multiselect - 如何獲取我剛剛選擇的值?

<select name="department" id="department-list" class="form-control" onChange="getTeams3(this.value);" multiple> 
    <option value="MONGOOSEAHOY" selected>All departments</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

功能是

function getTeams3(val) { 
    console.log($('#department-list').val()); 
    console.log(val); 

然而 - 在第二行顯示我剛剛選擇的值,而不是如果我選擇1,2和3,這將只顯示1 。如果我選​​擇2,然後3,它會顯示2.

任何想法?

+2

'evt.currentTarget.value'? – jmargolisvt

回答

-1

由於它是一個多重選擇,因此可以通過按住shift鍵並按下2或3來同時「更改」多個元素。那麼在那種情況下,你會在'val'中期待什麼?只有它可以是一個值的數組,而不僅僅是一個單一的值纔有意義。

我不認爲你有什麼選擇,除了保存當前選定的值(var cachedVals = $('#department-list').val())的數組,在頁面加載時初始化。

然後,當你getTeams3()被稱爲上的變化,再次獲得var newVals = $('#department-list').val()和比較反對cachedVals * -

  • 在NEWVALS但不是在cachedVals剛剛添加的值;
  • 如果沒有,則cachedVals中的值但不包含在newVals中的值僅被刪除。

當然,在從函數返回之前不要忘記設置cachedVals = newVals;

  • 對於數組比較,我會使用Underscore.js庫 - 一些非常方便的函數,例如,

    _.difference(['1','2','3'],['1','3']);

返回

[ '2']

+0

英勇的無聲downvoter罷工。請至少發表評論。 – oflahero

相關問題