2016-06-27 6 views
1

テキストを入力してEnterキーを押すと、テキストボックスが消えてしまいます。しかし、それは何らかの理由で、私が ';'をタイプすると消えるだけです。他の文字は動作しないようです。JavaScriptは、テキストフィールドに ';'

function enterPressed(e, field) { 
 
    if (e.keyCode == 13) { 
 
     var tb = document.getElementById("searchbox"); 
 
     eval(tb.value); 
 
\t \t if (field.value.length > 0) { 
 
\t document.getElementById('searchdisappear').style.display='none'; 
 
\t \t } 
 
\t } 
 
}
<!DOCTYPE html> 
 

 
<html lang = "en"> 
 

 
\t <head> 
 
\t \t <link rel="stylesheet" type="text/css" href="./css/main.css"> 
 
\t \t <script src ="./js/search.js"></script> 
 
\t </head> 
 
\t 
 
\t <body> 
 

 
<!-- SEARCH BAR AND BUTTON --> 
 
\t <div id="searchdisappear" style="display:block;"> 
 
\t \t <input id="searchbox" class="search" maxlength="200" type="text" onkeypress="enterPressed(event, searchbox)" placeholder="Search.."/> 
 
\t \t <p class="searchtext" onclick="buttonClicked(searchbox)" 
 

 
\t </div> 
 
</html>

+1

、ほとんどの場合はevalを使用することは悪い考えです。ユーザーの入力を信頼しないでください。 – Daedalus

+1

なぜユーザーからの文字列で 'eval'を呼び出すのですか?これは悪い考えです。 – Amy

+0

あなたのスニペットを試してみました。非数値、非文字のいずれかをタイプすると、eval()はスクリプトに失敗します。 – kazenorin

答えて

1

だけで、不要なeval機能を削除します。予告として

function enterPressed(e, field) { 
 
    if (e.keyCode == 13) { 
 
     var tb = document.getElementById("searchbox"); 
 
\t \t if (field.value.length > 0) { 
 
\t document.getElementById('searchdisappear').style.display='none'; 
 
\t \t } 
 
\t } 
 
}
<!DOCTYPE html> 
 

 
<html lang = "en"> 
 

 
\t <head> 
 
\t \t <link rel="stylesheet" type="text/css" href="./css/main.css"> 
 
\t \t <script src ="./js/search.js"></script> 
 
\t </head> 
 
\t 
 
\t <body> 
 

 
<!-- SEARCH BAR AND BUTTON --> 
 
\t <div id="searchdisappear" style="display:block;"> 
 
\t \t <input id="searchbox" class="search" maxlength="200" type="text" onkeypress="enterPressed(event, searchbox)" placeholder="Search.."/> 
 
\t \t <p class="searchtext" onclick="buttonClicked(searchbox)" 
 

 
\t </div> 
 
</html>

+3

いつも答えを出して、それがなぜうまくいくのか?誰もがなぜすぐに見ることはできません。 – Daedalus

+0

ありがとうございます。私は頭痛の多くを保存! –

+0

@Daedalus申し訳ありませんが、私は通常スニペットでまず答え、その説明で更新します。 –

関連する問題