4

我有一个带有input type=file. Internet Explorer 允许用户在该输入中键入任何他们想要的内容(而 Firefox 提供了一个文件选择器)。如果用户输入明显无效的名称,例如:

a

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

有什么办法让我知道这已经发生并让用户知道这正在发生并发出警报?

4

3 回答 3

1

您应该向提交按钮添加一个“onclick()”事件,该按钮调用一个 JavaScript 函数来测试您的状况并使用 JavaScript“警报”让用户知道他们需要输入值得提交的内容。

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

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

如果您想简单地提醒他们而不是测试他们的价值,您可以使用类似的东西:

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

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

<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>
于 2009-03-27T20:26:21.580 回答
1

我找到了一个更好的方法来做到这一点:http: //www.priddypictures.co.uk/reference/fileInputProblem.htm

因此,如果这些家伙/女孩是正确的,并且如果输入没有名称属性,则表单提交正常,那么:

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

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

于 2009-03-30T13:28:49.390 回答
0

您可以通过以下方式模仿 Firefox 行为:

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

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

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

在 IE 6、7 和 8 中似乎可以正常工作。

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

它在 Windows 3 和 4 的 Safari 中运行良好(因为它不允许输入<input type=file>)。

在 Opera 9(允许输入<input type=file>)中,它什么也不做(不弹出选择器或吞下按键)。实际上,该onkeypress事件似乎根本没有触发,可能是出于安全考虑。

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

于 2009-03-27T21:05:17.337 回答