如何正确调用文件选择器触发的onChange事件?

不喜欢AppleCores

我正在使用filepicker-rails并将其设置为:

<%= p.filepicker_field :bathroom_images, cache: true, multiple: true, onchange: "$.onFileUpload(event);" %>

这会将onChange事件设置为我抛出的任何函数(此处有更多详细信息

现在,这里有两个问题:我该如何设置我的coffeescript来调用它?

ready = ->
  console.log("ready")

  onFileUpload = (event) ->
    console.log "results of upload stored"
    window.results = event


$(document).ready ready

当我上传文件并触发事件时,此代码将引发错误:

Uncaught TypeError: $.onFileUpload is not a function

这是具体的问题。这是我真正想知道的:好的,所以您告诉我如何调用它,我不了解JS的哪些方面,我需要更好地学习才能了解这里出了什么问题?

我以为我正在创建一个变量(onFileUpload),该变量引用了我想将表单触发的事件传递给的函数。我在这里想念什么?

桑德·朗德

第一个问题是,您要让rails调用,$.onFileUpload(event);但是要实现一个onFileUpload(event)缺少'$'的命名函数部分。我建议将Rails代码中的更改为onFileUpload(event)

第二个问题是,rails试图在全局名称空间上调用此方法,但是您将其隐藏在rails无法访问的子范围内。发生这种情况的原因是,您将所有代码包装在jQuery ready事件中,并且由于javascript的工作方式,该函数内部的任何代码都不能被其外部的代码访问,除非另行指定。

现在要解决此问题,只需简单地创建onFileUpload全局window对象的属性我不是coffeescript专业人士,所以我不知道这是否是正确的方法,但是您可以通过将代码更改为来解决此问题:

ready = ->
  console.log("ready")

  window.onFileUpload = (event) ->
    console.log "results of upload stored"
    window.results = event


$(document).ready ready

这应该使函数onFileUpload全局允许rails调用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章