HTML + JQuery: SelectBox chọn nhiều option không cần nhấn Ctrl

hiện giờ mình code chạy được trên Chrome nhưng IE thì không chạy được vì IE không hỗ trợ event trên thẻ Option :frowning:

[code demo]https://jsbin.com/semawehozu
nhờ các bạn giúp mình với

Dùng plugins này nhé https://select2.github.io/select2/

Thank you!
Nhưng mình không được dùng plugins.

Thế thì tự viết thôi :smiling_imp:

Không dùng Ctrl thì không select nhiều option được, nếu click nó sẽ chọn duy nhất option đó. Vậy bạn chỉ cần lưu trạng thái select trước khi click là xong.

var $select = $('select');
var _temp = [];

$select.mousedown('option', function(e) {
  _temp = $(this).val() || [];
}).click('option', function(e) {
  var currVal = e.currentTarget.value;

  if (_temp.indexOf(currVal) !== -1) {
    _temp = _temp.filter(function(v) {
      return v != currVal;
    });
  } else {
    _temp.push(currVal);
  }

  $select.find('option').each(function(i, v) {
    $(v).prop('selected', (_temp.indexOf(v.value) !== -1));
  });
});
6 Likes

mình không hiểu đoạn này bạn có thể giải thích giúp mình không ạ

Phương thức filter() để lọc phần tử trong array. Ở đây là mình lọc phần tử giống nhau. Nếu option đó đã được select thì khi click lại nó sẽ loại bỏ.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?