Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.getElementByName代码在Firefox上运行良好,但在IE9上不起作用_Javascript_Html_Dom - Fatal编程技术网

Javascript document.getElementByName代码在Firefox上运行良好,但在IE9上不起作用

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> &

我在IE9和Firefox上都很好地使用了这段代码,但现在它只在Firefox上工作,并且它只是不在IE9上执行Java验证部分。你知道我需要做什么才能让它在两种浏览器上都工作吗?谢谢

  <?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后,它工作正常。谢谢大家!