我有一张input type=file
的表单。 Internet Explorer允许用户在输入中键入他们想要的任何内容(而Firefox会调出文件选择器)。如果用户输入公然无效的名称,例如:
a
并尝试提交表单,Internet Explorer甚至不尝试提交表单。
有没有办法让我知道发生了这种情况并让用户知道这是在发生警报?
答案 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属性,则表单提交正常:
我可能会在某个时候写这个插件。
答案 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
吞下了按键。