制限時間内のキー入力検査
Posted feedbacks - JavaScript
これも標準入出力ではありません。ブラウザ上でキーイベントを受けて、ブラウザ上に結果を表示します。
標準入出力を使うことが必須の要件でしたらゴメンナサイです。
IEとFirefoxのみで確認してます。
標準入出力を使うことが必須の要件でしたらゴメンナサイです。
IEとFirefoxのみで確認してます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function InputChecker(timeout, s) {
var start;
var input = [];
var prompt = "input("+ s + ")=>"
var pre = document.createElement("pre");
pre.innerHTML = prompt;
document.body.appendChild(pre);
function result() {
var time = new Date().getTime() - start.getTime();
if(time > timeout * 1000) return "TIMEOUT";
else if(s == input) return "OK";
else return "NG"
}
var f = function(e) {
e = e || event;
if(!start) start = new Date();
if(e.keyCode == 13) { // Enter
pre.innerHTML += "<br/>result=>" + result() + "<br/>" + prompt;
input = "";
start = undefined;
} else if(e.charCode == 0 && e.keyCode) { // for firefox. ignore BS, Del, .. etc.
} else {
var c = String.fromCharCode(e.keyCode || e.charCode);
pre.innerHTML += c;
input += c;
}
}
if(document.attachEvent) document.attachEvent("onkeypress", f);
else if(document.addEventListener) document.addEventListener("keypress", f, false);
else document.onkeypress = f;
}
new InputChecker(5, "ABCDEF");
|


raynstard
#3420()
Rating0/2=0.00
関数 InputCheckerは、以下の仕様を満たしてください。
たとえば、「InputCheker(5, "ABCDEF")」と指定した場合、 出力例はこんな感じです。
1. input(ABCDEF) =>と出力して入力待ちをし、ユーザーが「ABCDEF<ENTER>」を入力したとき、 入力開始から5秒以内ならば「OK」、5秒をこえていれば「TIME OUT」を出力します。 このとき、ユーザーがキーを押下しなければ1. を出力してから たとえ10秒たっていても「TIME OUT」にはならないので注意してください。 時間計測はあくまでユーザーが入力を開始してからです。
このお題はraynstardさんの投稿です。ご協力ありがとうございます。
[ reply ]