如何使用requireJS回调函数从外部javascript文件中定义的事件处理程序获取值
<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 :(得分:0)
require
调用是一个固有的异步调用。您无法从异步调用返回同步值。 (那里有一种require
的同义版本,需要在它之前进行异步调用,所以它不是真正的解决方案。)你可以返回一个承诺,但是DOM不能用于工作使用返回promise的事件处理程序。
做你想做的事的正确方法是:
制作一个HTML,其中不包含嵌入在HTML中的事件处理程序。
编写一个使用addEventListener
的RequireJS模块,或者使用jQuery&#39; s .on()
(按照您的意愿)将事件处理程序添加到您关注的元素中。例如:
define(['jquery', 'jqueryutils'], function($, utils) {
$("#shopprice").on("keypress", function (event) {
var a = utils.keyPressPrice(event);
alert(a);
return a;
});
});
将此模块放在HTML文件的末尾。如果上面的模块位于名为handlers.js
的文件中,则执行require(['handlers']);
。
答案 1 :(得分:0)
通过在javascript中设置事件侦听器并通过在外部脚本文件中调用处理程序来解决问题。
$("#shopprice").keypress(function(e)
{
utils.keyPressPrice(e);
});