10

我正在使用 Javascript 文件上传库,它的功能之一是它使用 HTML5 内联数据属性将信息传递给插件。

这对于任何与数据相关的数据、字符串、数字等都非常有用,但是该插件有一些回调方法,您可以为其分配函数。我的问题是,当尝试通过这些内联数据属性传递 javascript 函数时,如下所示:

<input type="file" name="test" data-on-finish="alert();">

该插件很好地获取了对 onFinish() 回调方法的引用,但是当它尝试执行我放在那里的任何 javascript 时,我得到了错误:

Uncaught TypeError: Object alert(); has no method 'call' 

我假设它正在读取alert();字符串。知道如何将可执行的 javascript 传递给插件吗?

我相信我使用的插件是 jQuery 文件上传插件的扩展: https ://github.com/blueimp/jQuery-File-Upload/wiki/Options

更新: 我也尝试过使用全局定义的函数,如下所示:

<script type="text/javascript">
    function myTesting(){
       alert('yay');
    }
</script>
<input type="file" name="test" data-on-finish="myTesting">

我已经尝试将data-on-finish属性更改为myTesting, myTesting(),仍然没有运气...

4

3 回答 3

20

为什么不放置回调的名称呢?就像是

//for example, a global function
window['someFunctionName'].call();

//a namespaced function
//similar to doing ns.someFunctionName()
ns['someFunctionName'].call();
于 2012-06-23T00:26:42.987 回答
0

看起来它正在尝试回调函数,例如 myfunction.call(

尝试传递是这样的函数。

<input type="file" name="test" data-on-finish="myFunction;">

function myFunction(){
 alert('I am alerting');
};
于 2012-06-23T00:30:15.473 回答
0

使用这样的东西:

$(function() {
  function test() {
    alert("ok");
  }

  $(".test").data("test", test);
  $(".test").data("test")();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="test">
</div>

于 2016-07-24T04:51:05.443 回答