Javascript document.getElementByName代码在Firefox上运行良好,但在IE9上不起作用
我在IE9和Firefox上都很好地使用了这段代码,但现在它只在Firefox上工作,并且它只是不在IE9上执行Java验证部分。你知道我需要做什么才能让它在两种浏览器上都工作吗?谢谢Javascript document.getElementByName代码在Firefox上运行良好,但在IE9上不起作用,javascript,html,dom,Javascript,Html,Dom,我在IE9和Firefox上都很好地使用了这段代码,但现在它只在Firefox上工作,并且它只是不在IE9上执行Java验证部分。你知道我需要做什么才能让它在两种浏览器上都工作吗?谢谢 <?php if(isset($_POST['submit'])) { $first_name=$_POST['fname']; echo 'Entered First Name = '.$first_name; } ?> <html> &
<?php
if(isset($_POST['submit'])) {
$first_name=$_POST['fname'];
echo 'Entered First Name = '.$first_name;
}
?>
<html>
<form method="post" enctype="multipart/form-data" action="">
<label for="fname"> First Name: </label> <input type="text" name="fname" /> <br /><br />
<label for="file"> Select File: </label> <input type="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
<script>
document.forms[0].addEventListener('submit', function( evt ) {
var file = document.getElementById('file').files[0];
if(file && file.size < 18000) {
//Submit form
alert('Size is valid');
} else {
alert('pic too big');
evt.preventDefault();
}
}, false);
</script>
</html>
看起来您有一个脚本错误 IE9似乎不支持files属性
document.forms[0].addEventListener('submit', function( evt ) {
var f = document.getElementById('file');
var file = f.files ? f.files[0] : f;
if(file && file.size < 18000) {
//Submit form
alert('Size is valid');
} else {
alert('pic too big');
evt.preventDefault();
}
}, false);
演示:看起来您有一个脚本错误 IE9似乎不支持files属性
document.forms[0].addEventListener('submit', function( evt ) {
var f = document.getElementById('file');
var file = f.files ? f.files[0] : f;
if(file && file.size < 18000) {
//Submit form
alert('Size is valid');
} else {
alert('pic too big');
evt.preventDefault();
}
}, false);
演示:文件数组不存在不是由于代码错误。Internet Explorer 9及以下版本,因此您必须使用解决方法,例如使用Java小程序或Adobe Flash上载。文件数组不存在并非由于代码错误。Internet Explorer 9及以下版本,因此您必须使用一种变通方法,例如使用Java小程序或Adobe Flash上载。结合Alex W所说的,您的代码也需要进行一些调整。getElementsByName需要尝试从中选择的name属性。它返回具有函数中给定名称的元素节点列表 将输入更改为具有名称属性,则您甚至不需要该函数: 我很好用。见下文 我通过自己的研究得到了纠正。关于getElementsByName,上述所有内容都是正确的,但是要检索File对象,必须从通过选择文件输入表单类型返回的数组中调用它。因此,document.getElementById'file'。文件[0]应该可以工作。下面的方法也是如此:
window.onload = (function () {
document.forms[0].addEventListener('submit', function (evt) {
//this works
var file = document.forms[0].file.files[0];
//as does this
file = document.getElementById('file').files[0];
if (file && file.size < 18000) {
//Submit form
alert('Size is valid');
} else {
alert('pic too big');
evt.preventDefault();
}
}, false);
});
证明它 结合Alex W所说的,您的代码也需要一些调整。getElementsByName需要尝试从中选择的name属性。它返回具有函数中给定名称的元素节点列表 将输入更改为具有名称属性,则您甚至不需要该函数: 我很好用。见下文 我通过自己的研究得到了纠正。关于getElementsByName,上述所有内容都是正确的,但是要检索File对象,必须从通过选择文件输入表单类型返回的数组中调用它。因此,document.getElementById'file'。文件[0]应该可以工作。下面的方法也是如此:
window.onload = (function () {
document.forms[0].addEventListener('submit', function (evt) {
//this works
var file = document.forms[0].file.files[0];
//as does this
file = document.getElementById('file').files[0];
if (file && file.size < 18000) {
//Submit form
alert('Size is valid');
} else {
alert('pic too big');
evt.preventDefault();
}
}, false);
});
证明它 此代码中没有document.getElementByName,考虑到它是getElementsByName,我无法想象它在FireFox中会如何工作。将eventlistener放在window.onLoad中看起来问题在于var file=document.getElementById'file'。文件[0];我没有看到任何Java代码。此代码中没有document.getElementByName。考虑到它是getElementsByName,我也无法想象它在FireFox中会如何工作。将eventlistener放在window.onLoad中看起来问题在于var file=document.getElementById'file'。文件[0];我没有看到任何Java代码。它在Fiddle中工作,但如果我使用IE9直接从Apache服务器运行它,它就不工作了。不过在Firefox中也可以使用。我甚至重置了IE设置,但运气不好。它在Fiddle中工作,但如果我使用IE9直接从Apache服务器运行它,它就不工作了。不过在Firefox中也可以使用。我甚至做了IE设置重置,但没有运气。是的,是IE9问题。升级到IE10后,它工作正常。谢谢大家!是的,是IE9问题。升级到IE10后,它工作正常。谢谢大家!