尝试在Internet Explorer中上传不存在的文件,表单未提交

时间:2009-03-27 20:18:38

标签: internet-explorer upload submit

我有一张input type=file的表单。 Internet Explorer允许用户在输入中键入他们想要的任何内容(而Firefox会调出文件选择器)。如果用户输入公然无效的名称,例如:

a

并尝试提交表单,Internet Explorer甚至不尝试提交表单。

有没有办法让我知道发生了这种情况并让用户知道这是在发生警报?

3 个答案:

答案 0 :(得分:1)

你应该在提交按钮中添加一个“onclick()”事件,该按钮调用一个JavaScript函数来测试你的情况,并使用JavaScript“警告”让用户知道他们需要输入值得提交的内容。 / p>

查看正则表达式以进行测试。

如果您希望用户做出决定,请使用confirm()

如果您只是提醒他们而不是测试他们的价值,您可以使用以下内容:

<input type="submit" value="clickme" onClick="if (confirm('Really submit?')) { this.form.submit(); }">

以下是一些示例代码,可以从onclick()中的JavaScript函数调用中获取值:

<html>
    <head>
        <title>hello world</title>
        <SCRIPT LANGUAGE="javascript" type="text/javascript">
            function show_me(form_elem) {
            alert(form_elem.value);
            }
        </script>
    </head>
    <body>
        <form method="GET" name="upload_form" action="index.html" target="_top">
            <input type="file" name="file_name" size="14" maxlength="256" value="">
            <br>
            <input type="submit" value="mybutton" onclick="show_me(this.form.file_name)" />
        </form>
    </body>
</html>

答案 1 :(得分:1)

我发现了一种更好的方法: http://www.priddypictures.co.uk/reference/fileInputProblem.htm

所以,如果那些人/ gals是对的,如果输入没有name属性,则表单提交正常:

  • 编写一个jQuery插件,该插件将(如果是Internet Explorer)从所有文件输入中删除name属性
  • 将另一个隐藏的输入插入到具有正确名称的表单中
  • 将值从文件输入复制到隐藏输入

我可能会在某个时候写这个插件。

答案 2 :(得分:0)

您可以使用以下内容模仿Firefox行为:

<input type="file" name="test" onkeypress="this.click();return false;">

当用户尝试输入文件输入时,会弹出文件选择器。

显然,如果客户端禁用了JavaScript,这将无效,但根据您的要求,它可能“足够好”。

似乎在IE 6,7和8中正常工作。

它在Firefox 3中运行正常(因为它不允许输入<input type=file>)。

在适用于Windows 3和Windows的Safari中,它可以正常工作4(因为它不允许输入<input type=file>)。

在Opera 9中(允许输入<input type=file>)它不会做任何事情(不会弹出选择器或吞下按键)。 onkeypress事件似乎根本没有发生,可能是出于安全考虑。

在Firefox 2中它不起作用(允许输入<input type=file>)因为this.click()没有弹出选择器而return false吞下了按键。