2016-09-07 13 views
0

私はselect2バージョン3.4.3を持っているテーマを使用しています。削除したバリューIDを取得したいので、試しました:Select2複数から削除した値を取得

$('#mymultiple').on("select2:removed", function (e) { 
    console.log(e.val); 
}) 

ただし、イベントは検出されません。

$('#mymultiple').on("select2:unselect", function (e) { 
    console.log(e.val); 
}) 

をしかし、オブジェクトがいくつかの情報があるが、それは、私に未定義の値が得られます:その後、私はテスト

$('#mymultiple').on("select2:unselect", function (e) { 
    console.log(e); 
}) 

オブジェクト{タイプ: "セレクト2:非選択"、のparams:オブジェクトを、タイムスタンプ: 1473273802173、jQuery18308796073916839738:真、isTrigger:真、 排他:未定義、名前空間: ""、namespace_re:ヌル、結果: 未定義、ターゲット:、...}

テンプレートプロジェクトのスタイルを使用する必要があるため、このバージョンを使用する必要があります(3.5.3およびremovedは正常に動作しますが、スタイルは正しくインポートできません)。だから、私はどのように複数の選択から削除された値を得ることができますか?

答えて

1

select2 ver 3.4.3のように、削除された要素のイベントがサポートされていないようです。

あなたは代わりにこの回避策を使用することができます。私のコードのサポートは(私は確信してSELECT2サポートないんだけど、あなたは念のためにそれを持っている)複数の要素

の除去

注意を3.4.3で

$(document).ready(function() { 
 
    $("#s1").select2(); 
 
    $("#s1").data('originalvalues', []); 
 
    $("#s1").on('change', function(e) { 
 
    var that = this; 
 
    removed = [] 
 
    
 
    $($(this).data('originalvalues')).each(function(k, v) { 
 
     if (!$(that).val()) { 
 
     removed[removed.length] = v; 
 
     return false; 
 
     } 
 
     if ($(that).val().indexOf(v) == -1) { 
 
     removed[removed.length] = v; 
 
     } 
 
    }); 
 
    
 
    
 
    if ($(this).val()) { 
 
     $(this).data('originalvalues', $(this).val()); 
 
    } else { 
 
     $(this).data('originalvalues', []); 
 
    } 
 
    
 
    console.log("Removed: " + removed) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.3/select2.css" /> 
 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.3/select2.min.js"></script> 
 

 
<select id="s1" multiple="multiple"> 
 
    <option value="AL">Alabama</option> 
 
    <option value="WY">Wyoming</option> 
 
</select>

+0

ありがとうございました。しかし、私は追加された値で同じ問題を抱えています、あなたはこれでどのようにつながりますか? $(this).val()の長さが大きいときは複雑な方法で(原点をとり、$(this).val()とdiffを作り、変数に差をつける) – FacundoGFlores

+0

@smcdはここで受け入れられた答えを得なければなりません。私の悪い。 – Dekel

2

イベント "削除" の代わりにされた "セレクト2:削除"

select2 v3.4.3 source codeを通して見ることにより、それを見つけた)

$(document).ready(function() { 
 
    $('#mymultiple').select2({ 
 
    placeholder: 'pick items' 
 
    }); 
 

 
    $('#mymultiple').on("removed", function(e) { 
 
    alert(e.val); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.3/select2.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.3/select2.css" rel="stylesheet" /> 
 
<select id='mymultiple' multiple> 
 
    <option value='one'>One</option> 
 
    <option value='two'>Two</option> 
 
    <option value='three'>Three</option> 
 
</select>

関連する問題