2012-04-18 2 views
-3

때 onKeyPress 텍스트 상자 : 나는이 한 문제

<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/> 

그리고 내의 .js에서

내가 가진 파일 : 나는 내 텍스트 상자에 '2'가있는 경우,

initialize() 
{ 
    var x = $("#txtMy").val(); 
} 

그러나 다음 나는 4를 입력 , x 값은 여전히 ​​2입니다. 어떻게 해결할 수 있습니까?

+1

대신 'onkeyup' 시도 – MilkyWayJoe

+2

인라인 속성을 사용하여 이벤트 핸들러를 연결하는 것은 좋지 않습니다. jQuery와 같은 프레임 워크를 사용하는 경우에는 바인딩 프로세스의 모든 과정을 손쉽게 수행 할 수 있으므로 실제로 수행 할 이유가 없습니다. –

답변

1

사용 keyup 여기

당신이 어떻게에서 unobtrusive way 그.

HTML

<input type="text" id="txtMy" /> 

스크립트

$(function(){ 
    $("#txtMy").keyup(function (event) { 
    alert($(this).val()) 
    }); 
}); 

근무 샘플 : http://jsfiddle.net/VmELF/4/

당신이 DOM에 주입되고있는 텍스트 상자의 기능을 결합하려면 DOM로드 후 (Ajax 호출 등으로 가능), 당신은 m 님 jQuery를이 on

$(function(){ 
    $("body").on("keyup","#txtSearchKey",function (event) { 
    alert($(this).val()) 
    }); 
}); 
1

onkeypress의 맞춤법이 맞춤법 (inititalize)과 일치하지 않습니다.

0

대신 마크 업 이벤트 핸들러의 당신이 jQuery를 사용할 수 있습니다 사용

var x; 

$("#txtMy").on("keyup", function(){ 
    x = $(this).val(); 
    alert(x); 
}) 
+1

질문을 편집하여 관련성이 없어 졌기 때문에 이전 메모가 삭제되었습니다. –

0

몇 가지 :

  1. 사용 keyup 이벤트를. 문자가 녹음되기 전에 keypress이 (가) 실행 중입니다.
  2. HTML 스 니펫에서 initialize() 함수의 철자가 잘못되었습니다.

http://jsfiddle.net/8XTLW/1/

1

keydownkeypress 행사에서 작업 jsfiddle을 참조 모두 입력 한 키가 실제로 텍스트 상자에 출연하기 전에 실행합니다. 키가 나타난 후에 입력 값을 새로 얻으려면 이벤트를 사용하십시오.

<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/> 

initialize() 
{ 
    var x = $("#txtMy").val(); 
} 

당신은 당신이 어쨌든 라이브러리를 사용하고 있기 때문에, .on()를 사용하여 자바 스크립트 이벤트 핸들러 바인딩 고려해야한다. 당신의 논리 (자바 스크립트)를 당신의 관점 (HTML)과 분리하여 유지하는 것은 좋은 습관입니다.

관련 문제