无法在Safari和Chrome中克隆文件输入元素。 FF和Opera都行

时间:2011-01-10 09:21:43

标签: jquery cross-browser

这很奇怪。我有一个简单的表格。我有一个文件输入元素这个表单。

用户单击文件输入元素并选择一个文件。我使用以下代码克隆文件输入:

$('input[name="song[attachment]"]').clone(true).appendTo('form')

在所有浏览器中:FF,Opera,Safari,Chrome,当我检查表单元素时,我在表单中看到了克隆的文件输入元素。但是,当我在FF和Opera中提交表单时,它可以工作。 Safari和Chrome使用空文件输入提交表单。

我注意到克隆文件输入元素并将其附加到表单元素时,它不会复制其值。它只克隆一个空的输入文件元素。这是正常的吗?

我的Jquery代码有问题吗?或者这是一个安全问题,这就是为什么Safari和Chrome不允许我这样做的原因?如果是后者,为什么FF和Opera会这样做呢?

1 个答案:

答案 0 :(得分:2)

您不能为文件输入指定默认值,甚至不能在js中编辑它。其默认值始终为空。这是一个安全问题,有人可以隐藏文件输入(例如display:none),并在他不知情的情况下从客户端的计算机上传敏感数据。

关于你问题的第二部分,我不完全确定问题,只是一个想法。你有输入的身份证吗?如果是这样,您应该考虑到DOM中必须是唯一的。