2014-12-19 4 views
1

변경된 다중 선택의 상태가 선택 해제되거나 선택되었는지 확인하고 싶습니다.다중 선택 탐지 옵션 선택시 변경시 변경됨

의사 코드 :이 같은

$(document).on('change', '.mySelect', function (event) { 
     if(event === 'selected'){ 
      alert("You have selected this item."); 
     } else { 
      alert("You have deselected this item."); 
     } 
}); 

뭔가가 작동하지 않습니다. 이벤트가 "선택"이벤트 또는 "선택 취소"이벤트였던 날씨를 어떻게 확인할 수 있습니까?

http://jsfiddle.net/Wexcode/a4mf8akj/5/

function wasDeselected (sel, val) { 
    if (!val) { 
    return true;  
    } 
    return sel && sel.some(function(d) { return val.indexOf(d) == -1; }) 
} 

$(document).on('change', 'select', function (event) { 
    var message, 
     $select = $(event.target), 
     val  = $select.val(), 
     sel  = $('select').data('selected'); 

    // Store the array of selected elements 
    $select.data('selected', val); 

    // Check the previous and current val 
    if (wasDeselected(sel, val)) { 
    message = "You have deselected this item."; 
    } else { 
    message = "You have selected this item."; 
    } 
    alert(message); 
}); 
+0

클래스 .mySelect 체크 박스를 가진 요소가 시도? – ateich

+1

사용중인 플러그인의 이름/링크 또는 jsfiddle 및 html 코드를 제공하십시오. –

답변

2

변화에 선택 요소의 현재 상태를 저장 시도이다 선택된 옵션 길이 ..

var $select = $('select'); 
$select.change(function() { 
    // Last saved state; 
    var lastState = $(this).data('total'), 
     // New state; 
     changedState = $(this).find('option:selected').length, 

     txt = (lastState < changedState ? 
      'selected' : (
     lastState > changedState ? 
      'Deselected' : 
      'Only one option is selected')); 
    // save state 
    $(this).data('total', changedState); 
    $('#console').append('<p>' + lastState + ' => ' + changedState + '<span>' + txt + '</span></p>'); 

// Initializing tracker 
}).data('total', $select.find('option:selected').length); 

here

+0

이것은 정확히 내가 필요한 것입니다. 정말 고마워요! 하나의 버그가 있습니다. 배열 수가 동일하면 메시지가 처리 할 수 ​​없습니다. 음 ... 세 번째 메시지를 만들어야합니다. – Neoaptt

2

트릭은을 추적하는 것입니다 : 여기에 편집

는 jsfiddle DEMO