jquery와 ajax를 사용하여 MS-DOS 에뮬레이션 창을 만들려고합니다. 잘 작동하지만 단어를 입력하거나 Enter 키를 누르면 스크립트가 너무 늦게 표시됩니다 (첫 번째 키를 눌렀을 때 문자가 표시되지 않고 각 다음 keydown에 대해 현재 문자 대신 사용자가 입력 한 이전 문자가 표시됨). 하나). 그것이 내가이Keydown이 현재 문자 대신 이전 문자를 처리합니다.
$("#instruct").html(request+'x');
에이
$("#instruct").html(request);
을 변경해야하는 경우 때문에 때
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/terminal.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
//set cursor position
$('#cursor').css('left','0px');
//focus on textfield
$('#field').focus();
//On key down...
$('#field').keydown(function(event)
{
request=$(this).val();
count=$(this).val().length;
//Display chars as they come
$("#instruct").html(request);
// If "enter" is pressed
if (event.which == 13)
{
event.preventDefault();
//clean user entry
request=request.replace(/\n/g, "");
// Process user entry
$.ajax({
type: "POST",
url: "scripts/ajax/terminal.php",
data: {command:request},
success: function(response)
{
// if user typed something before pressing "enter"
if(response !='')
{
// update list by logging the previous entry, showing system response and clearing the textarea
$('#log').append("<li class='user'>--- ><span>"+request+"</span></li>");
$('#log').append("<li class='sys' >SYS ><span>"+response+"</span></li>");
$('#field').val('');
}
}
});
}
});
});
</script>
</head>
<body>
<ul id="log">
<li class='sys'>Sys ><span>Identification required</span></li>
</ul>
<ul id="realtime">
<li id="live-space">
<span class="user-line">--- ></span>
<textarea type="text" id="field"></textarea>
<div>
<span id="instruct"></span><div id="cursor">_</div>
</div>
</li>
</ul>
</body>
</html>
내가 "를 keyDown"확신 해고 : 여기
내 스크립트의 단순화 된 버전입니다... "요청"콘텐츠가 지연되는 동안 첫 번째 키 입력 직후에 "x"가 표시됩니다. 다음 keydown (예를 들어, "a"를 입력하면 "x"가 표시되고 immediatly 후에 "b"를 입력하면 "ax"등이 표시됨).
그렇다면 keydown을 실행하는 것이 아니라 적절한 시간에 적절한 문자를 선택하는 것입니다.
내가 뭘 잘못 했니?
감사합니다.
'keyup '이 작동합니까? –
나는 keydown, keypress 및 keyup을 시도했다. 각자 혼자 (그들은 같은 이슈를 공유합니다) 또는 그 두 가지를 함께 조합하십시오. 그 중 세 명을 사용하여 같은 기능을 발휘한다면 나는 거의 옳았습니다.하지만 커서를 움직이는 것과 같은 다른 종소리와 휘파람이 미쳐 가고 있습니다 (화살표 키를 누를 때마다 커서가 한 번이 아니라 3 번 움직입니다). 문제는 keyDown에서만 작동한다는 것입니다. – Baylock
@Baylock : 그렇게해서는 안되며, 왜 내 대답에 묘사되어 있습니다. 당신은 너무 일찍입니다. – Amadan