0

私はこのコードを 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> 
4

3 に答える 3

3

files配列が存在しないのは、コード エラーによるものではありません。Internet Explorer 9 以下はHTML5 ファイル APIをサポートしていないため、Java アプレットまたは Adob​​e Flash を使用してアップロードするなどの回避策を使用する必要があります。

于 2013-05-27T03:41:54.593 に答える
1

Alex W が言ったことと組み合わせると、コードにも微調整が必​​要です。getElementsByName選択しようとしている場所から name 属性が必要です。関数で指定された名前の要素の NodeList を返します。.

input属性を持つように変更するとname、その関数は必要なくなります。

<input type="file" name="file" /> idうまく動作します。下記参照。

私は自分の研究によって修正されています。については上記のすべてが当てはまりますが、オブジェクトgetElementsByNameを取得するにはFile、ファイル入力フォーム タイプを選択して返された配列から呼び出す必要があります。そのため、動作document.getElementById('file').files[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);
});

jsフィドル

結局のところ、HTML5 File API をサポートしていないブラウザー (IE を見てください) では動作しません。

編集

おっ、おっ、おっ、君臨してる?IE6が核攻撃されたらid、属性が属性を置き換える予定だったことを読んだところです。nameどうやらこれは古いニュース1 2 3です。

そこで、いくつかのテストを行ったidところ、要素を同じ方法で呼び出すと問題なく動作することがわかりました。

var file = document.forms[0].file;

証明する?Ok

于 2013-05-27T03:48:39.703 に答える
0

スクリプト エラーがあるようです。

このfilesプロパティは IE9 ではサポートされていないようです

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);

デモ:フィドル

于 2013-05-27T03:17:22.577 に答える