プロが教える店舗&オフィスのセキュリティ対策術

下記のコードのように、 <p id="target"></p>内に、文字列「I can't believe it.」を表示し、PCのキーボードより入力をおこない、もし一文字が正解なら、'_' (アンダースコア) に変換して、次の文字に繰り返し進んでいくというプログラムです。ここで、ひとつ問題がありまして、「I can't believe it.」という文字列のカンマと、ピリオドが、キーボードからの入力では、処理されず '_' に変換されません。 おそらく  if (String.fromCharCode(e.keyCode) === cw[cl].toUpperCase()) { の部分が、英文字にだけ等しくなっっているようで、ここにカンマやピリオドも含めるようにするにはどのように書いたらよいでしょうか?  また、他にも、今回は、「I can't believe it.」と表示していますが、数値も含める場合、「shibuya101」などの文字列にしたばあいも、数値の部分で処理されていないので、数値も含めるばあいもどのように書いたらよいのか教えてください。よろしくお願いします。



<!DOCTYPE html>
<html lang="ja">
<body>

<p id="target"></p>

<script>
(function() {
'use strict';

var cw = 'I can\'t believe it\.';
var cl = 0;
target.innerHTML = cw;

window.addEventListener('keyup', function(e) {

if (String.fromCharCode(e.keyCode) === cw[cl].toUpperCase()) {
cl++;
var placeholder = '';
for (var i = 0; i < cl; i++) {
placeholder += '_';
}
target.innerHTML = placeholder + cw.substring(cl);

}

});

})();
</script>

</body>
</html>

質問者からの補足コメント

  • すいません。補足ですが、
    数値の入力の場合は、今のままだと、テンキーからの入力だけが、無理で、キーボードの4段目からの入力なら可能でした。テンキーからの入力になると、どのように書いたらよいでしょうか?

      補足日時:2016/06/22 17:50

A 回答 (1件)

こんにちは



このあたりが参考になるかもです
http://javascripttyping.game.coocan.jp/javascrip …
    • good
    • 0
この回答へのお礼

ありがとうござまいす。 英文字以外のものを配列に格納することで対処できました。

お礼日時:2016/06/24 00:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!