2011-08-02 34 views
2

我正在使用jQuery的“更改”功能处理HTML输入文件字段的“onChange”事件。这按预期工作,并确实在元素值发生变化时触发。但是,并非在以下情况下:jQuery - 输入字段更改事件无法正常工作......正如所料

  1. 用户指定要上载的文件。我们称这个文件为“file.dat”。

  2. jQuery稍后通过使用 val函数将文件字段的值设置为“”。

  3. 用户指定要上传完全相同的文件“file.dat”。

在上述情况下,“的onChange”不会被调用在步骤3。但是,如果在步骤3用户指定一个不同的文件,它确实被调用。

是因为我使用jQuery的val函数来更改值吗?如果我想将输入文件字段重置为其基本/默认值,还有其他替代方法吗?

回答

1

出于安全原因,JavaScript无法影响file输入的值。它看起来似乎已经清除了这个值,但它并不是真的。

您可以通过重置整个表单或再次创建元素并将其插入到DOM中来代替旧的元素。

这是一个工作example。请注意使用jQuery live函数来绑定change事件。这是必需的,因为每次单击“清除”按钮时,我们都会向DOM中插入一个新元素。

0

你试过.reset()而不是.val()吗?