【问题标题】:"Uncaught ReferenceError: (function) is not defined" with onfocus event带有 onfocus 事件的“未捕获的 ReferenceError:(函数)未定义”
【发布时间】:2013-10-27 06:45:12
【问题描述】:

我在模板的 scala.html 文件中有这个输入(我使用 Play Framework):

<input type="email" name="email" id="email" onfocus="isEmailExistF();" >

还有这个 Coffee 脚本:

  isEmailExistF = ->
    $("#email").fadeOut()

然后,当我关注输入#email 时没有任何反应,控制台报告:

Uncaught ReferenceError: isEmailExistF is not defined
  > onfocus

但如果我将onfocus 替换为onblur 或其他事件,则相同。 CoffeeScript 编译没问题,因为我还有其他可以正常工作的咖啡脚本。我尝试使用纯 jquery 来了解这是否是咖啡问题。我把这段代码嵌入到代码中:

<script>
var isEmailExistF;

isEmailExistF = function() {
  return $("#email").fadeOut();
};
</script>

它有效。我哪里错了?

编辑: 脚本文件包含在&lt;head&gt;:

<script type="text/javascript" src="/assets/javascripts/main.js"></script>

内容(从coffeescript编译)是:

(function() {
  var isEmailExistF;
  isEmailExistF = function() {
    return $("#email").fadeOut();
  };
  $(document).ready(function() {
     ...

【问题讨论】:

  • 而不是这个 onfocus="isEmailExistF();"替换 onfocus="isEmailExistF()"。在您的代码中,您在函数中添加了分号。 @Fred K
  • 嗨@DD。已经试过了,还是一样的
  • 你的函数是在&lt;head&gt;而不是DOM ready / load事件中吗?
  • @Karl-AndréGagnon 它不需要 DOM 准备好,因为事件处理程序是内联分配的(仅当您需要在分配事件处理程序之前等待元素存在时才相关)。
  • 编译后的 CoffeeScript 周围的 IIFE 意味着该函数对外部范围不可用。

标签: javascript jquery html scala coffeescript


【解决方案1】:

我在咖啡脚本页面中制作了这个:http://coffeescript.org/

在 HTML 代码中移除焦点属性:

<input type="email" name="email" id="email">

在 coffeescript 里面替换你的代码:

$(document).ready -> $(document).on("focus","#email",-> $(this).fadeOut())

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多