【问题标题】:RequireJS call back function to return value for keyeventsRequireJS 回调函数返回关键事件的值
【发布时间】:2015-04-01 08:46:35
【问题描述】:

如何使用 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 事件响应此结果?

【问题讨论】:

    标签: jquery callback requirejs return


    【解决方案1】:

    require 调用本质上是一个异步 调用。您不能从异步调用中返回同步值。 (RequireJS 提供了一种require 的同步版本,但它需要在它之前进行异步调用,因此它不是真正的解决方案。)您可以返回一个承诺,但 DOM 并非设计为与返回的事件处理程序一起使用承诺。

    做你想做的事情的正确方法是:

    1. 生成一个包含嵌入在 HTML 中的事件处理程序的 HTML。

    2. 编写一个使用addEventListener 或使用jQuery 的.on() 的RequireJS 模块(如您所愿)为您关心的元素添加事件处理程序。例如:

      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']);

    【讨论】:

      【解决方案2】:

      通过在 javascript 中设置事件侦听器和在外部脚本文件中调用处理程序解决了问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多