2016-08-18 15 views
-2

'form'の入力をリストに追加するイベントとして 'enter'-keyを使用する際に問題があります。 以下のコードは動作しますが、「cmd + enter」の組み合わせを押すと、リストに項目が追加され、同じページで新しいタブが開きます。jQuery 'enter'-keyイベントハンドラ

私が達成しようとしているのは、「フォーム」フィールドがフォーカスされていて、「Enter」キー(「cmd + Enter」の組み合わせではない)を押すたびに、アイテムがリストに追加され、タブが同じページで開きます。 (私はFirefoxの48.0とSafari 9.1.2で自分のコードをテストしています)

は、ここでは、コードのHTML部分です:

<form id="inputWindow"> Type-in here: <input type='text' name='input'></input></form> 

ここでは、コードのjQueryの一部です。

$(document).ready(function() { 
$('#inputWindow').keypress(function(event) { 

if (event.which == 13){ 
var answer = $("input[name=input]").val(); 
    $('.list').append('<div class="item">' + answer + '</div>'); 
    }); 
}); 
+0

バインドが入るようにフォームにイベントを提出します潜在的な提出を誘発 – zzzzBov

+0

あなたは実際に助けることができる質問をランキングするのではなく、少なくともこれを行う方法を教えてください。 –

+0

私のコメントはコメントとして意味されていました。送信ハンドラをバインドして問題を解決すれば、すばらしいことです。あなたがこれらのことをする方法を知りたいのであれば、Googleで検索し、あなた自身の研究をすることはあなたを長い道のりにします。私が自分の時間を投資することを期待しているのは、自分自身を投資するのが面倒だからです。*無礼です。そのような行動は、一般的にここでは容認されません。 – zzzzBov

答えて

0

が欠落しています。 ページの再読み込みの問題は、HTML部分にonsubmit = "return false"を追加することで簡単に解決できます。だから、コードは次のようになりなければならない。 HTML部分:

<form id="inputWindow" onsubmit="return false"> Type-in here: <input type='text' name='input'></input></form> 

jQueryの一部().readyあなたの$(文書を持っていると仮定します):

$('#inputWindow').submit(function() { 
var answer = $("input[name=input]").val(); 
    $('.list').append('<div class="item">' + answer + '</div>'); 
}); 
0

あなたは実際にそれが.keypressイベントの代わりに.submit使用する方がはるかに簡単ですいくつかの});jsfiddle

$(document).ready(function() { 
    $('#inputWindow').keypress(function(event) { 

    if (event.which == 13){ 
     var answer = $("input[name=input]").val(); 
     $('.list').append('<div class="item">' + answer + '</div>'); 
    } 
    }); 
}); 
+0

私はそれを貼り付けるのを忘れてしまった、問題は同じままです。 –

+0

@thecapnamerica編集してください。 –

+0

私のjのフィドルでは、イベントはcmdなしでEnterキーを押したときにだけ発生します。私がcmd + enterを押すと、イベントは起動しません –

関連する問題