2015-02-02 1 views
0

에 대한 값을 반환하는 함수를 다시 호출 이외의 키 코드에 대한 자바 스크립트 파일RequireJS 내가 외부에 정의 된 이벤트 핸들러에서 값을 가져 오기위한 requireJS 콜백 기능을 사용할 수 있습니다 어떻게 KeyEvent를

<input type="text" id="shopprice" 
onkeypress= "require(['jqueryutils'],function(utils){var a =  
utils.keyPressPrice(event); alert(a); return a;});" ></input> 

이벤트 핸들러 utils.keyPressPrice 반환 false 자리에. 경고는 결과를 올바르게 표시합니다 (숫자는 true이고 비 숫자는 false). 이 결과에 대해 onkeypress 이벤트가 어떻게 응답하게합니까?

답변

0

호출은 본질적으로 비동기 호출입니다. 비동기 호출에서 동기 값을 리턴 할 수 없습니다. (require의 동 기화 버전에는 RequireJS가 제공되지만 그 전에는 비동기 호출이 필요하므로 실제로는 해결책이 아닙니다.) 약속을 반환 할 수는 있지만 DOM은 약속을 반환하는 이벤트 핸들러와 함께 작동하도록 설계되지 않았습니다.

당신이 원하는 일을 할 수있는 올바른 방법은 이것이다 :

  1. 는 HTML에 포함 하지 포함 된 이벤트 핸들러를 수행하는 HTML을 생성합니다.

  2. addEventListener을 사용하는 RequireJS 모듈을 작성하거나 jQuery의 .on() (원하는대로)을 사용하여 관심있는 요소에 이벤트 처리기를 추가하십시오. 예 :

    define(['jquery', 'jqueryutils'], function($, utils) { 
    
    $("#shopprice").on("keypress", function (event) { 
        var a = utils.keyPressPrice(event); 
        alert(a); 
        return a; 
    }); 
    
    }); 
    
  3. HTML 파일 끝 부분에이 모듈이 필요합니다. 위의 모듈이 handlers.js이라는 파일에 있으면 require(['handlers']);입니다.

0

자바 스크립트에서 이벤트 리스너를 설정하고 외부 스크립트 파일에서 핸들러를 호출하여 해결 된 문제입니다.

$("#shopprice").keypress(function(e) 
{ 
utils.keyPressPrice(e); 
});