IE7でのファイルサイズチェックについて

このQ&Aのポイント
  • JavaScriptを使用して、IE7でのファイルサイズチェックに問題があります。
  • IE7ではファイル選択のプロパティが正しく取得できず、エラーが発生します。
  • 他のブラウザやIE8以降では正常に動作しますが、IE7では別の方法を考える必要があります。
回答を見る
  • ベストアンサー

IE7でのファイルサイズチェックについて

ファイルサイズをチェックするためにjavascriptで、以下のような記述をしています。 選択したファイルが1.5MB以上ある場合、エラーメッセを出す。 if (!$("セレクタ名").val().trim() == "") {   var upFiles = document.getElementById("bt-upload").files;   for(var i=0; i < upFiles.length; i++){    if (upFiles[i].size > 1572864 ) {     エラーメッセージ表示    } } FirefoxやChrome、Safariは問題なく、IE8も大丈夫なのですが、IE7では、 エラーになり、どうも”upFiles.length”の箇所で、 「エラー'0':Null またはオブジェクトがありません。」と警告が出ます。 別の方法でもいいのですがファイルサイズを調べるやり方、この他にもありますでしょうか。

  • HTML
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

IE7ではセキュリティ上の問題が報告されています。 > http://support.microsoft.com/kb/890981/ja > http://d.hatena.ne.jp/hasegawayosuke/20060828/p1

webama_fk
質問者

お礼

大変参考になりました。ありがとうございます。

関連するQ&A

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

  • /*@cc_on@*/

    条件付きコンパイルステートメントの/*@cc_on@*/を使用してaddEventListenerとattachEventを切り替えるという方法を教えてもらいましたが、IEで動作確認をすると、「サポートされていないオブジェクトまたは、メソッドです」といったエラーを返されます。 ifで分けて書いてみるとオブジェクトではないかNULLですといったエラーで返ってきます。 どなたかご存知の方がいらっしゃれば、ご教授いただけると助かります。 教えていただいたソース>selectメニューに応じてdivを変換する <!--/*@cc_on @*/ var changer = function(evt){  var sel = evt./*@if(1)srcElement @else@*/target /*@end@*/;  changer.set(sel.value); } changer.set = function(val){  if(!val) return;  var pa, ch, i, target = this.target;  var reg = new RegExp("\\b" + val + "\\b");  for(i=0; i<target.length; i++){   if(!(pa=document.getElementById(target[i]))) continue;   ch = pa.firstChild;   while(ch){    if(ch.nodeType==1) ch.style.display = reg.test(ch.className)?"":"none";    ch = ch.nextSibling;   }  } } changer.init = function(id, ids){  var sel = document.getElementById(id);  if(!sel || sel.nodeName != "SELECT") return;  this.target = ids.split(",");  this.set(sel.value); ★ sel./*@if(1)attachEvent('on' + @else@*/addEventListener(/*@end@*/'change',changer, false); sel = null; } // 引数1:select要素のid // 引数2:選択表示する対象となる要素(ラッパー)のid(カンマ連結) changer.init("sel","dir1,dir2"); //--> ★の部分がサポートされていないようです。 ifで書き換えてみたところ var ie = /*@cc_on@*/false; if(ie){sel.attachEvent('onchange',changer);} else{sel.addEventListener('change',changer,false);} 'value'はNULLまたはオブジェクトではありませんというエラーになります。

  • javascript getelementsbytagnameについてです。

    var keisan=document.getElementsByTagName('input'); for(i=0;i<=keisan.length;i++){ if(keisan[i].getAttribute('value').match('Click')){ keisan[i].onclick=add(); } } function add() { var a = document.getElementById('number1').value; var b = document.getElementById('number2').value; var c = a - -b; alert(c); } 上のプログラムを入れると、"keisan[i]はnullです"といったエラーがでます。 kaisan.length=0になっているみたいです…。 xhtmlだと作動するのですが、htmlだと作動しません。 対応してないのでしょうか? 宜しくお願いいたします。

  • IE6 で アップロードファイルサイズ

    IE6 でアップロードしたファイルのサイズを取得したいです。 いろんなやり方を試しましたが、ページエラーばかり出てしまいます。 下記のようなフォームです。multipulの指定はなし。 ------------------------------------- <form name="frmFile" action=""> | <input type="file" name="upfile" value=""> | </form> ------------------------------------- <script type="text/javascript"> var filesize = document.frmFile.upfile.fileSize; </script> 上記のjavascriptではページエラーが出ます。 ファイルサイズを取得して、一定の値以上の容量であればアラートを出力する javascriptのプログラムを書きたいですが、エラーが出ていては前に進めません。 サイズの取得の仕方を教えてください。お願いします。

  • Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

    Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。 var data = [ [1,2,3], [4,5,6], [7,8,9] ]; for (var i = 0; i < data.length; i++){ for (var j = 0; j < data[i].length; j++){ <--- ここで lengthのオブジェクトがNullというエラーになります。 alert(data[i][j]); } } よろしくお願いいたします。

  • IE8で種類が一致しませんとエラーが出てしまいます

    初めて質問させていただきます。 javascriptは、勉強しだした全くの初心者ですがよろしくお願い致します。 自分で作ったHPで、写真をボタンで順に切り替えるページがあり、ちょうどYahooの知恵袋でぴったりのソースを書いていらっしゃる方をみつけ、参考にさせてもらってページを作ったのですが、先日IE8で確認したところ、種類が一致しませんとエラーが出てしまいました。safariやFirefox(MacでもWindowsでも)では問題ありません。 自分で手直しした部分の可能性もあるため、参考にした元のソースで、テストのページを作ってみましたが、やはり同じ divIMG.appendChild(ary[idx]); の行がだめなようです。 テストのページアドレス http://www.ne.jp/asahi/coo/pipi/ ここでは5枚の画像を入れてありますが右のボタンで5枚目を表示した後さらに押すとエラー になります。下の方 divIMG.appendChild(ary[idx]);の部分でエラーが出ます。 lightbox 等画像を順送りで閲覧出来る方法もあるようですが、実際のHPはこの方法で物件ごとのぺージを沢山作ってしまっているので部分的にソースを修正して回避出来ないものかと考えております。自分でも調べてみましたが、全く頭がついていきません。なにとぞよろしくお願い致します。 質問の文字数制限にかかるのでscriptの部分だけ書きます。 <script type="text/javascript"> var ary = []; var idx = 0; var divIMG; var btnF; var btnP; var btnE; var btnT; var aryImgURL = [ 'img1.jpg', 'img2.jpg', 'img3.jpg', 'img4.jpg', 'img5.jpg'] function preload(imgs) { for (var i = 0; i < imgs.length; i++) { var elmIMG = new Image(); elmIMG.src = imgs[i]; ary.push(elmIMG); } } function test(e) { var tgt = e.srcElement ? e.srcElement: e.target; switch (tgt.id) { case 'fbtn': if (idx < aryImgURL.length) { idx++; } break; case 'tbtn': idx = 0; break; case 'ebtn': idx = aryImgURL.length - 1; break; case 'pbtn': if (idx > 0) { idx--; } break; } showImage(); changeButtonStatus(); } function showImage() { while (divIMG.hasChildNodes()) { divIMG.removeChild(divIMG.firstChild); } divIMG.appendChild(ary[idx]); } function changeButtonStatus() { if (idx == 0) { btnP.disabled = true; btnT.disabled = true; } else { btnP.disabled = false; btnT.disabled = false; } if (idx == aryImgURL.length - 1) { btnF.disabled = true; btnE.disabled = true; } else { btnF.disabled = false; btnE.disabled = false; } } window.onload = function() { divIMG = document.getElementById('imgarea'); btnF = document.getElementById('fbtn'); btnP = document.getElementById('pbtn'); btnE = document.getElementById('ebtn'); btnT = document.getElementById('tbtn'); preload(aryImgURL); showImage(); changeButtonStatus(); } </script>

  • AJAXの計算式の中にIF文を入れて表示したい

    下記の2つのファイルで、フォームから入力した数値同士の「足し算の結果」をAJAXで表示できます。 ******************************************** 【HTMLフォーム】 <script language="JavaScript" type="text/javascript" src="js/culc.js"></script> <form name="f1"> <input type="text" id="text1" name="text1" size="10" maxlength="10" /> + <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="足す" onclick="readText()" /> </form> <p id="message"></p> ******************************************* 【JAVASCRIPT(culc.js)】 function readText() { var text1 = document.getElementById("text1"); var text2 = document.getElementById("text2"); var message = document.getElementById("message"); var str_val1 = text1.value; var str_val2 = text2.value; var sum; if (isNaN(str_val1) || str_val1 == "" || isNaN(str_val2) || str_val2 == "") { textMessage = "数値以外の文字が入っています"; } else { //sum = str_val1 + str_val2; sum = parseFloat(str_val1) + parseFloat(str_val2); textMessage = "合計は、" + sum + "です"; } message.innerHTML = textMessage; } ************************************************ 【質問】 このjavascriptを改造し、入力した数値についての「足し算の結果」が正の数だった場合には「正の数」、負の数だった場合は「負の数」と表示すべく改造しております。下記の改造を施したのですが、うまく表示されません。 下記の文のどこが誤りか修正頂けませんでしょうか? 宜しくお願い致します。 【JAVASCRIPT(culc2.js)】 function readText() { var text1 = document.getElementById("text1"); var text2 = document.getElementById("text2"); var message = document.getElementById("message"); var str_val1 = text1.value; var str_val2 = text2.value; var sum; if (isNaN(str_val1) || str_val1 == "" || isNaN(str_val2) || str_val2 == "") { textMessage = "数値以外の文字が入っています"; } else { //sum = str_val1 + str_val2; sum = parseFloat(str_val1) + parseFloat(str_val2); textMessage = "(if((sum > 0) { document.write("正の数"); } else((sum <= 0) { document.write("負の数"); } ))"; } message.innerHTML = textMessage; }

    • ベストアンサー
    • AJAX
  • JavaScriptで入力制御&チェックをしたい

    JavaScriptを使ってフォームの質問1の3を答えたら質問2が入力可能なるようにしたです。 name="q2"の形にすると制御できますが、phpでの受け取りが、最後にチェックされた値しか表示されないためname="q2[]"にしたいです。 しかし、name="q2[]"にした時のJS側の記述がわかりません。 name="q2[]"にするとphpの配列でチェックされた値全部を取得できるので、name="q2[]"の形でJSの 修正をしたいのですが、どのように記述すれがいいのでしょうか? なお、JSで難しい場合は、JSではなくPHPの修正でもかまいません。 結果、入力制御、入力チェックもでき、チェックボックスの値すべてがpostでphpに送れればいいです。 現状では下記のようにしています。 どうぞよろしくお願いいたします。 <form id="form1" name="form1" method="post" action="kakunin2.php" > <label for="q1">質問1</label> <p>今回のイベントはどうでしたか?</p> <p> <input type="radio" name="q1" value="よかった" onClick="changeDisabled()" />よかった   <input type="radio" name="q1" value="普通" onClick="changeDisabled()" />普通   <input type="radio" name="q1" value="おもしろくなかった" onClick="changeDisabled()" />おもしろくなかった <br /><span id="q1_error" name="q1_error"></span> </p> <label for="q2">質問2</label> <p>質問1で「おもしろくなかった」とお答えの方に質問です。<br />おもしろくなかった理由は何ですか?</p> <p> <input type="checkbox" name="q2[]" value="退屈だった" disabled="disabled" />退屈だった   <input type="checkbox" name="q2[]" value="時間が長かった" disabled="disabled" />時間が長かった   <input type="checkbox" name="q2[]" value="時間が短すぎた" disabled="disabled" />時間が短すぎた   <br /><span id="q2_error" name="q2_error"></span> </p> <input type="button" name="submit_01" id="submit_01" value="確認" onclick="check()"/> </form> ----------以下JavaScript---------- var frm = document.form1; var q1 = ""; var q2 = ""; var error_flag = ""; //質問1のチェック for(i = 0; i < frm.q1.length; i++){ if(frm.q1[i].checked){ q1 = frm.q1[i].value; } } if(q1 == "") { document.getElementById("q1_error").innerHTML = "質問1におこたえください"; error_flag = "1"; }else{ document.getElementById("q1_error").innerHTML = ""; } //質問2のチェック if(q1 == "おもしろくなかった" ) { for(j = 0; j < frm.q2.length; j++){ if(frm.q2[j].checked){ q2 = frm.q2[j].value; } } if(q2 == "") { document.getElementById("q2_error").innerHTML = "質問2におこたえください"; error_flag = "1"; }else{ document.getElementById("q2_error").innerHTML = ""; } }else{ document.getElementById("q2_error").innerHTML = ""; } if(error_flag !=""){ alert("入力が正しくありません!"); }else{ document.form1.submit(); } } //質問2のチェックボックスを使えるようにするかどうかを設定する function changeDisabled(){ //フォームのオブジェクトを入れておく var frm = document.form1; //質問1で「おもしろくなかった」を選ばれている場合に質問を入力できるようにする if(frm.q1[2].checked) { //チェックが入っていた場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = false; } }else{ //チェックが入っていなかった場合の処理 for(i = 0; i < frm.q2.length; i++){ frm.q2[i].disabled = true; } document.getElementById("q2_error").innerHTML = ""; } } ----------以下PHP(kakunin2.php)での受け取り---------- $q2 = $_POST["q2[]"]; for($i=0; $i<count($_POST["q2"]); $i++){ $q2[$i] = $_POST["q2"][$i] .","; echo $q2[$i]; }

  • IE9でのファイルアクセス

    IE9のPCが2台ありますが、ファイル書き込みが完了するものと、しないものがあります。 考えられる原因としてどのようなことがありますでしょうか。 IEのセキュリティ設定は2台ともに同じです。 完了するPCはVista、完了しないPCは7です。 var file; try { file = fso.OpenTextFile(path4, 2, false,-1); file.WriteLine(writestring); } catch(e){ alert("write error"); } finally { if(file){ file.Close(); location.reload(); } }

  • checkboxにcheckが複数入っているか判断

    gridViewの一覧データのチェックボックスにチェックが複数入っていると、”複数選択されています”のエラーを出したいのですが、どのように記述すれば良いかわかりません。 以下は現状のコードです。 gridViewに表示された一覧データの中で、チェックボックスにチェックが入っているかを確認し、どこにもチェックが入っていない場合は"データを選択して下さい。"のエラーメッセージを出しています。 function CheckSelection() { var objGrd = document.getElementById('<%=grvSclData.ClientID %>'); var selFlg = false; if (objGrd != null) { for (var idx = 0; idx < objGrd.rows.length; idx++) { for (var subidx = 0; subidx < objGrd.rows[idx].cells[0].children.length; subidx++) { var chid = objGrd.rows[idx].cells[0].children[subidx]; if (chid.type == 'checkbox') { if (chid.checked) { selFlg = true; break; } } } if (selFlg) { break; } } } if (!selFlg) { alert("データを選択して下さい。"); return false; } return true; };

専門家に質問してみよう