我有一个包含input type=file
的表单。在Internet Explorer中,用户可以输入任何他们想要的内容到该输入框中(而Firefox会弹出文件选择器)。如果用户输入一个明显无效的名称,例如:
a
当用户尝试提交表单时,Internet Explorer甚至不会尝试提交表单。
有没有办法让我知道发生了这种情况,并通过警报让用户知道正在发生什么?
我有一个包含input type=file
的表单。在Internet Explorer中,用户可以输入任何他们想要的内容到该输入框中(而Firefox会弹出文件选择器)。如果用户输入一个明显无效的名称,例如:
a
当用户尝试提交表单时,Internet Explorer甚至不会尝试提交表单。
有没有办法让我知道发生了这种情况,并通过警报让用户知道正在发生什么?
我找到了更好的方法来做这个: http://www.priddypictures.co.uk/reference/fileInputProblem.htm
所以,如果那些人是对的,如果输入没有名称属性,则表单可以正常提交:
我可能会在某个时候编写这个插件。
你应该给提交按钮添加一个"onclick()"事件,调用一个JavaScript函数来测试你的条件,并使用JavaScript的"alert"来告知用户需要输入一些值得提交的内容。
研究一下正则表达式来进行测试。
如果你希望用户做出决定,可以使用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>
<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>
中输入)。
在允许在<input type=file>
中输入的Opera 9中,它不起作用(不弹出选择器或吞咽按键)。实际上,onkeypress
事件似乎根本没有触发,可能是出于安全考虑。
在Firefox 2中无法工作(允许在<input type=file>
中输入),因为this.click()
不会弹出选择器,而return false
会吞咽按键。