2016-08-18 9 views
-2

'enter'키를 이벤트로 사용하여 'form'의 입력을 목록에 추가하는 데 문제가 있습니다. 아래 코드는 작동하지만 "cmd + enter"조합을 누르면 목록에 항목이 추가되고 같은 페이지에 새 탭이 열립니다.jQuery 'enter'키 이벤트 핸들러

'form'필드에 포커스가있을 때마다 'enter'키 ('cmd + enter'조합이 아님)를 누르면 목록에 항목이 추가되고 새로운 항목이 추가되지 않습니다. 탭이 동일한 페이지와 함께 열립니다. 는

다음은 코드의 HTML 부분 (I 파이어 폭스 48.0 및 Safari 9.1.2에서 내 코드를 테스트하고있어) :

<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

바인드는 입력으로 폼에 이벤트를 제출 implicit submission – 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

나의 js 바이올린에서는 cmd없이 enter 키를 눌러야 만 이벤트가 시작됩니다. cmd + enter를 누르면 이벤트가 실행되지 않습니다. –