如題,現在有個js的功能:用戶選擇下拉框的同時,把選擇的下拉框顯示出來。同時選擇的不能有重復的。剛開始 使用的是 select的onchange事件:
1 $("#liveType").on("change",function(){ 2 $("#selectedLiveType").append("<p><span class='close'>X</span><button value='"+$('#liveType option:selected').val()+"' name='selectLiveType' onclick='removeLiveType(this)' style='background-color:white'>"+$('#liveType option:selected').text()+"</button></p>") 3 4 })
然而這種情況下,當選擇第一個的時候 ,總是沒有任何的反應。於是google:得到下面的方法
Element.prototype.onSelectChange = function(callback) { var cached = 0; this.addEventListener("click", function(event) { if (cached == this) { callback.call(this, event); cached = 0; } else { cached = this; } }); } var select = document.getElementById("liveType"); select.onSelectChange(function(event) { var liveTypes=new Array(); $("button[name='selectLiveType']").each(function () { liveTypes.push($(this).val()); }) var checkArray = liveTypes.join(','); if(checkArray.indexOf($('#liveType option:selected').val()) == -1){ $("#selectedLiveType").append("<p><span class='close'>X</span><button value='"+$('#liveType option:selected').val()+"' name='selectLiveType' onclick='removeLiveType(this)' style='background-color:white'>"+$('#liveType option:selected').text()+"</button></p>") } });
通過 定義一個 數組checkArray, 使用indexOf進行判斷有沒有重復的。ok...