按住CTRL多选,按住shift连选的实现

<tr class="address" v-for="(counts, index) in counts" :key="index" @click="trSelect(index)" :class="rowsSelect.indexOf(index) != -1 ? 'selectTr' : ''"></tr>
document.onkeydown =  (e) => {
                    if (!this.keyCode) {
                        if (window.event) {
                            this.keyCode = event.keyCode;
                        } else if (e.which) {
                            this.keyCode = e.which;
                        }

                    }
                };
                document.onkeyup =  () => {
                    if (this.keyCode) {
                        this.keyCode = undefined;
                    }
                };
trSelect(index) {
                    switch (this.keyCode) {
                        case 17://ctrl
                            this.isCtrl = true;
                            if (this.rowsSelect.indexOf(index) != -1) {
                                this.rowsSelect.splice(index, 1);
                            } else {
                                this.rowsSelect.push(index);
                            }
                            this.startIndex = index;
                            break;
                        case 16://shift
                            if (!this.isCtrl && this.rowsSelect.length == 0) {
                                this.rowsSelect.push(index);
                                this.startIndex = index;
                                return;
                            }
                            let start, end;
                            if (this.startIndex < index) {
                                start = this. startIndex;
                                end = index;
                            } else {
                                start = index;
                                end = this.startIndex;
                            }
                            this.rowsSelect = [];

                            for (let k = start; k <= end; k++) {
                                this.rowsSelect.push(k);
                            }
                            this.isCtrl = false;
                            break;
                        default:
                            this.rowsSelect = [index];
                            this.isCtrl = false;
                            this.startIndex = index;
                            break;
                    }

                }

  

  

猜你喜欢

转载自www.cnblogs.com/lrxsblog/p/9923456.html