jscancer

Javascript crap (relatively small)
git clone git://git.codemadness.org/jscancer
Log | Files | Refs | README | LICENSE

commit d182ddbec3df3bd0bd98fa0e6ff3ae4afce761fd
parent 7f49cb4a96cdbcdd229ea47fa386c1290ef3330c
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Mon, 29 May 2017 21:30:37 +0200

improvements

- fix bug when focus on an input then unfocus and clicking it: the
  list item would then be not selectable usign the mouse.
- simplify some unimportant optimization.
- kill some lines.

Diffstat:
Mdatalist/datalist.js | 43++++++++++++++++++-------------------------
1 file changed, 18 insertions(+), 25 deletions(-)

diff --git a/datalist/datalist.js b/datalist/datalist.js @@ -97,7 +97,7 @@ function datalist_init(input) { if (cursel) input.value = cursel.textContent || cursel.innerText; if (!datalist_visible) - return datalist_show(false); + return; datalist_show(false); e.stopPropagation(); return !!e.preventDefault(); @@ -154,30 +154,13 @@ function datalist_init(input) { if (!hassel) datalist_setsel(null); } - // show list if it has matches. - if (m.length) { - // only one match? select it. - if (m.length == 1) - datalist_setsel(m[0].el); - datalist_render(m); - } + // only one match? select it. + if (m.length == 1) + datalist_setsel(m[0].el); + datalist_render(m); datalist_show(!!m.length); }; - var focuschange = function(e) { - datalist_setsel(null); - if (e.target === input) { - var m = datalist_match(input.value); - if (m.length) - datalist_render(m); - datalist_show(!!m.length); - dropdown.scrollTop = 0; // reset scroll. - } else { - datalist_show(false); - } - }; - input.addEventListener("input", function() { - onchange(); - }); + input.addEventListener("input", onchange); input.addEventListener("keyup", function(e) { mouse = true; switch (e.which) { @@ -192,8 +175,18 @@ function datalist_init(input) { } onchange(); }, false); - input.addEventListener("focus", focuschange, false); - document.addEventListener("click", focuschange, false); + input.addEventListener("focus", function() { + datalist_setsel(null); + var m = datalist_match(input.value); + datalist_render(m); + datalist_show(!!m.length); + dropdown.scrollTop = 0; // reset scroll. + }, false); + input.addEventListener("blur", function() { + mouse = true; + datalist_setsel(null); + datalist_show(false); + }, false); document.body.appendChild(dropdown); }