重置表单会删除输入文件上的HTML 5验证

时间:2014-01-22 13:55:17

标签: javascript html5 html-validation

我遇到过这个问题但仍然没有任何线索/想法。

这是我在jsfiddle上的代码。

如您所见,单击“上传”将触发文件输入的HTML验证,并显示错误消息。

但是,如果我选择一个文件,然后单击“重置”按钮重置表单。之后,我点击“上传”(提交表格),验证结束。

我也尝试使用javascript方法reset()但问题仍然存在。

请注意,我使用的是谷歌Chrome浏览器。

有没有人对这个问题有一些想法?

或者我刚刚遇到HTML验证错误?

2 个答案:

答案 0 :(得分:2)

看起来这是Chrome的一个错误 您可以通过在输入字段上添加以下CSS来查看差异。

input:invalid {
    color: blue;
} 

当您在FF上重置时,输入字段将变为无效,但在Chrome上,它不会。在Chrome上,如果您选择一个文件,然后再次调出选择屏幕然后取消它,该字段将变为无效。这似乎是重置输入字段的唯一方法。

看起来你必须添加一些代码。

答案 1 :(得分:0)

只有我遇到此问题的浏览器才能在Chrome上使用。以下将解决我的问题(不知道为什么会有效)

$("button[type='reset']").on('click', function() {
    $("#file").replaceWith('<input id="file" type="file" required />');
    return true;
});

<强> JSFiddle