【发布时间】: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>
它有效。我哪里错了?
编辑:
脚本文件包含在<head>:
<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。已经试过了,还是一样的
-
你的函数是在
<head>而不是DOM ready / load事件中吗? -
@Karl-AndréGagnon 它不需要 DOM 准备好,因为事件处理程序是内联分配的(仅当您需要在分配事件处理程序之前等待元素存在时才相关)。
-
编译后的 CoffeeScript 周围的 IIFE 意味着该函数对外部范围不可用。
标签: javascript jquery html scala coffeescript