RequireJS 回调函数到 return 键事件的值
RequireJS call back function to return value for keyevents
如何使用 requireJS 回调函数从外部 javascript 文件
中定义的事件处理程序获取值
<input type="text" id="shopprice"
onkeypress= "require(['jqueryutils'],function(utils){var a =
utils.keyPressPrice(event); alert(a); return a;});" ></input>
事件处理程序 utils.keyPressPrice
returns false
除数字以外的键码。警报正确显示结果(true
表示数字,false
表示非数字)。我怎样才能让 onkeypress
事件响应这个结果?
require
调用本质上是一个 异步 调用。您不能 return 来自异步调用的同步值。 (RequireJS 提供了一种 require
的同步版本,但它需要在它之前进行异步调用,所以它不是真正的解决方案。)你可以 return 一个承诺,但 DOM不适用于 return 承诺的事件处理程序。
做您想做的事情的正确方法是:
生成 HTML 不 包含嵌入在 HTML.
[=35 中的事件处理程序=]
编写一个 RequireJS 模块,使用 addEventListener
或使用 jQuery 的 .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']);
.
通过在 javascript 中设置事件侦听器并在外部脚本文件中调用处理程序解决了问题。
$("#shopprice").keypress(function(e)
{
utils.keyPressPrice(e);
});
如何使用 requireJS 回调函数从外部 javascript 文件
中定义的事件处理程序获取值<input type="text" id="shopprice"
onkeypress= "require(['jqueryutils'],function(utils){var a =
utils.keyPressPrice(event); alert(a); return a;});" ></input>
事件处理程序 utils.keyPressPrice
returns false
除数字以外的键码。警报正确显示结果(true
表示数字,false
表示非数字)。我怎样才能让 onkeypress
事件响应这个结果?
require
调用本质上是一个 异步 调用。您不能 return 来自异步调用的同步值。 (RequireJS 提供了一种 require
的同步版本,但它需要在它之前进行异步调用,所以它不是真正的解决方案。)你可以 return 一个承诺,但 DOM不适用于 return 承诺的事件处理程序。
做您想做的事情的正确方法是:
生成 HTML 不 包含嵌入在 HTML.
[=35 中的事件处理程序=]编写一个 RequireJS 模块,使用
addEventListener
或使用 jQuery 的.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']);
.
通过在 javascript 中设置事件侦听器并在外部脚本文件中调用处理程序解决了问题。
$("#shopprice").keypress(function(e)
{
utils.keyPressPrice(e);
});