LoginSignup
1
0

More than 5 years have passed since last update.

JavaScript promptもどき ~ onKeyUpを取りたくて ~

Last updated at Posted at 2018-06-29

何がしたかったのかと言うと。

「prompt で onKeyUp を 取りたかった」
でも、できそうにないので「もどき」を自分で作ることにしました。

ようは入力欄に入力した後に、[OK]を押すのが面倒くさかったのです。
タブキー→スペースキーでも、クリックでも大して変わらないのですが、少しでも省略したかった。
明確に用途が決まっていて、入力欄には12桁の番号をペーストするだけだったので、ペーストされたら即時に次に進んでほしい。というのが これを作った理由です。


/* promptもどきを表示(Toastもどきの使い回し) */

var sc = document.scrollingElement.scrollTop; 

var text = document.createElement("span");

var prm = "何か入力して下さい。<br><br>";
prm += "<input type=text id=memo size=20 placeholder='追跡番号とか' value=''><br><br>";
prm += "<input type=button id=ok value='OK'>&nbsp;";
prm += "<input type=button id=cancel value='キャンセル'>";
prm += "<p id=output></p>";

text.innerHTML=prm;

var ts = text.style;

ts.color = '#000';
ts.backgroundColor = 'white';
ts.padding = '15px';
ts.border = '1px solid gainsboro';
ts.boxShadow = '3px 3px 10px';
ts.zIndex = '100';

document.body.appendChild(text);

ts.position = 'absolute'; 
ts.top = 50 + sc + 'px'; 
ts.left = (window.innerWidth / 2)-(text.offsetWidth / 2) + 'px'; 

/* イベント関係の処理 */

var m=document.getElementById('memo');
var o=document.getElementById('output');

m.focus();
m.onkeyup = input_check;

/* 入力チェック */

function input_check() {
/* 何かテキトーにしたいことをする */
}

/* [OK]を押した場合、次の処理へ。(入力内容のチェックはしてない) */

document.getElementById('ok').onclick = next;

function next() { alert(m.value); cls(); }

/* [キャンセル]を押した場合は、ただ閉じる。 */

document.getElementById('cancel').onclick = cls;

function cls() { document.body.removeChild(text); }

動作確認環境

Windows 10
Google Chrome 67

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0