기존 웹 시스템의 SELECT 태그를 쉽게 사용할 수 있는 Javascript(책갈피)
14623 단어 JavaScript책갈피bookmarklet
딱한 사정
저희 회사에 슈퍼 전통 시스템이 있어요.
HTML로 제작된 웹 시스템이지만<select>
아주 길어요.50개 또는 100개의 선택 항목이 있습니다.자격증 이름, 사업소 일람표 등 비슷한 이름이 많아 지옥이다.
화면에 입력하는 사람에게는 참을 수 없다.눈으로 보기엔 선택이 불가능해.
그래서 나는 전통 시스템에 호흡을 주입할 수 있는 책갈피를 만들었다.
쓸것
코드
이렇게 된 기분이야.평론을 더하면 약 60줄 정도 된다.
구식이라고 하지만 제이큐리로 코드를 썼어요.
select-filter.jsvoid ((function (f) {
if (window.jQuery && jQuery().jquery > '2.0') {
console.log('use jquery');
f(jQuery);
} else {
console.log('load jquery');
var script = document.createElement('script');
script.src = '//code.jquery.com/jquery-3.5.1.slim.min.js';
script.onload = function () {
var $ = jQuery.noConflict(true);
f($);
};
document.body.appendChild(script);
}
})(
function ($, undefined) {
$('select').each(function (i, select) {
//selectにidが無ければ、nameから作り出す
if (!select.id) {
select.id = select.name + '_' + i;
}
let options = $(select).children('option').length;
let text = `<input type="text" data-selectid="${select.id}" class="__ft">`;
let badge = `<span id="${select.id}_hit">${options}</span>/<span>${options}</span>`;
//textboxを突っ込む
$(select).before(`${text} ${badge} <br>`);
});
//追加したテキストボックス全てに適用するイベントハンドラ
$('input.__ft').on('input', function (ev) {
let selector = '#' + $(this).data('selectid');
let selectid = $(selector).attr('id');
console.log(selector);
let txt = this.value;
console.log(txt);
//フィルタした瞬間に選択肢を元に戻すならコメントはずす
// $(selector).prop("selectedIndex", 0);
let hit = 0;
$(selector).children('option').each(function (i, e) {
if (isDefaultOption(e) || matchOption(e, txt)) {
$(e).show();
hit++;
} else {
$(e).hide();
}
});
$(`span#${selectid}_hit`).text(hit);
});
//デフォルトオプションの判定(システムに合わせて適当に書き換える必要があるかも)
function isDefaultOption(element) {
return $(element).val() == '' || $(element).hasClass('default');
}
//表示する条件(半角全角の調整など必要なことをやるべし)
function matchOption(element, input) {
return $(element).text().indexOf(input) != -1;
}
}
))
코드도 여기 놔둬.
https://github.com/kanaxx/kanaxx.github.io/tree/master/bookmarklet/select-filter
코드 설명
설명할 코드는 아니지만 일단 계산해 봅시다.$('select')
따라서 화면에 있는 모든'select'를 대상으로 한다.
전통 시스템id
이 에 추가id
하였다.
텍스트 상자 바로 아래에 있는'select'의id
를 텍스트 상자의data-selectid
로 훈련하여 관련성을 가지게 하고class
류에 분배__ft
류__ft
전체 클래스에 input 이벤트 처리 프로그램을 등록합니다
이벤트 처리 프로그램에서 select에서 옵션을 찾습니다. 부분만 일치합니다. show()
실행
많은 페이지를 선택해야 하기 때문에 스스로 했다.
https://kanaxx.github.io/bookmarklet/select-filter/index.html
F12에서 Devotol을 열고 Constore에 스크립트를 넣으십시오.
초기 디스플레이는 선택만
너무 오래되어 견딜 수 없다
책갈피 책갈피 실행하기(스크립트)
화면 내 선택에 텍스트 상자가 생성됩니다!
필터링 수행
교재에 도(都)를 넣으면 도쿄도(東京都)와 교토부(京都府)는 두 가지 옵션만 있어 쉽게 선택할 수 있다.3/48은 왼쪽이 일치하는 옵션 수를 표시하고 오른쪽은 선택 항목의 총수를 나타낸다.텍스트 상자에서 삭제하면 모두 같다.
총결산
비교적 통용되기 때문에 대다수 사이트의 선택 항목인'select'를 놀라게 할 수 있을 것이다.나는 맨 위의 옵션을 잘 판단할 방법을 찾지 못했다.
마음에 들면 브라우저의 책갈피 표시줄을 등록해 보세요.
참고 자료
국가 일람표는 이곳의 일람표를 사용했다.5년 전 국명이 2020년으로 정해지면 바뀔 수도 있다.
https://qiita.com/tao_s/items/32b90a2751bfbdd585ea
Reference
이 문제에 관하여(기존 웹 시스템의 SELECT 태그를 쉽게 사용할 수 있는 Javascript(책갈피)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kanaxx/items/bfccbd562c50e91a61fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
void ((function (f) {
if (window.jQuery && jQuery().jquery > '2.0') {
console.log('use jquery');
f(jQuery);
} else {
console.log('load jquery');
var script = document.createElement('script');
script.src = '//code.jquery.com/jquery-3.5.1.slim.min.js';
script.onload = function () {
var $ = jQuery.noConflict(true);
f($);
};
document.body.appendChild(script);
}
})(
function ($, undefined) {
$('select').each(function (i, select) {
//selectにidが無ければ、nameから作り出す
if (!select.id) {
select.id = select.name + '_' + i;
}
let options = $(select).children('option').length;
let text = `<input type="text" data-selectid="${select.id}" class="__ft">`;
let badge = `<span id="${select.id}_hit">${options}</span>/<span>${options}</span>`;
//textboxを突っ込む
$(select).before(`${text} ${badge} <br>`);
});
//追加したテキストボックス全てに適用するイベントハンドラ
$('input.__ft').on('input', function (ev) {
let selector = '#' + $(this).data('selectid');
let selectid = $(selector).attr('id');
console.log(selector);
let txt = this.value;
console.log(txt);
//フィルタした瞬間に選択肢を元に戻すならコメントはずす
// $(selector).prop("selectedIndex", 0);
let hit = 0;
$(selector).children('option').each(function (i, e) {
if (isDefaultOption(e) || matchOption(e, txt)) {
$(e).show();
hit++;
} else {
$(e).hide();
}
});
$(`span#${selectid}_hit`).text(hit);
});
//デフォルトオプションの判定(システムに合わせて適当に書き換える必要があるかも)
function isDefaultOption(element) {
return $(element).val() == '' || $(element).hasClass('default');
}
//表示する条件(半角全角の調整など必要なことをやるべし)
function matchOption(element, input) {
return $(element).text().indexOf(input) != -1;
}
}
))
비교적 통용되기 때문에 대다수 사이트의 선택 항목인'select'를 놀라게 할 수 있을 것이다.나는 맨 위의 옵션을 잘 판단할 방법을 찾지 못했다.
마음에 들면 브라우저의 책갈피 표시줄을 등록해 보세요.
참고 자료
국가 일람표는 이곳의 일람표를 사용했다.5년 전 국명이 2020년으로 정해지면 바뀔 수도 있다.
https://qiita.com/tao_s/items/32b90a2751bfbdd585ea
Reference
이 문제에 관하여(기존 웹 시스템의 SELECT 태그를 쉽게 사용할 수 있는 Javascript(책갈피)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kanaxx/items/bfccbd562c50e91a61fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)