IE8で、<input type="file">を使用していますが、
BMPファイルを選択した場合には、テキストエリアをクリアしたいのですが、
javascriptで行うと、エラーになってしまいます。
テキストエリアは複数あり、javascriptに可変変数を渡しています。
どなたか、解決方法をご存知の方、いらっしゃいましたら、
ご教授願います。よろしくお願い致します。
具体的なコードは、以下の通りです。
<script type="text/javascript"><!--
function preview_image(obj_image, image_id, oID1, oID2) {
var ext = document.getElementById(oID1).value;
if(ext.match(/\.(bmp)$/i)){
alert("bmpファイルは、アップロードできません。");
document.getElementById(oID2).src = "/img/dummy.jpg";
obj_image.style.color='#FFFFFF'
return false;
} else {
document.getElementById(image_id).src= obj_image.value;
document.getElementById(image_id).style.display="inline";
}
}
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
こちらはinputをspanに収めてクリアする方法です。
この回答への補足
この方法で、IE8でも動作は確認できましたが、
PHPで、複数のファイルアップロード機能があり、
いずれか、1つのファイルを選択します。
<input type="file" name="file_x">
<input type="file" name="file_y">
<input type="file" name="file_z">の様に連番に表示し、
例えば、1,2,3,4,5と複数の質問があり、5つの質問でまだ回答していない
1に回答すると、正常に動作しますが、1~5で回答していない時に、
1以外の2~5のいずれかに回答した場合、例として、ここでは3に答えたとします。表示されるのが、1になってしまいます。
そのような場合、どのような記述をすればよいのでしょうか?
No.4
- 回答日時:
#2です。
#3様の方法で実験してみたところ可能みたいですね。
<html>
<head>
<script type="text/javascript">
function check(f) {
var i = 0, e, c = f.childNodes, flag = true;
while (e = c[i++]) if (e.nodeName=='INPUT' && e.type=='file' && e.value.match(/\.bmp$/i)) {
flag = false;
var inp = document.createElement('INPUT');
inp.setAttribute("type", "file");
f.replaceChild(inp, e);
}
if (flag) {
alert('OK'); //f.submit();
} else {
alert('BMPファイル');
}
}
</script>
</head>
<body>
<form>
A:<input type="file">
<br>
B:<input type="file">
<br>
<button type="button" onclick="check(this.form)">check</button>
</form>
</body>
</html>
No.3
- 回答日時:
> <input type="file">のテキストエリアをクリアしようとしています
type="file" への代入はできません。これは、意図しないファイルの不正アップロードを防ぐためのセキュリティ対策です。ただ、これでエラーは出ませんでした。(IE8の場合)
(type="file"の中身を消す方法として、一度<input>タグごとremoveして、新しい<input type="file">を生成する、という方法で出来ませんかね??試していませんが・・・)
エラーになりそうなところは、補足のonChangeイベントで呼び出しているpreview_imageの第3引数に閉じの ' がないことでしょうか。(下記☆印)
onChange="preview_image(this, 'preview_img<?= $QA_datas[$i][0]['id']; ?>','img<?= $QA_datas[$i][0]['id']; ?>☆,'img_<?= $QA_datas[$i][0]['id']; ?>')"
コピペミスかもしれませんが確認してみてください。
あと気になったので・・・。
実装済みかもしれませんが、拡張子は偽装できるのでサーバー側でのファイル検証も忘れずに。
この回答への補足
一度<input>タグごとremoveして、新しい<input type="file">を生成すると
いうのは、具体的には、どのようにしたらよいのでしょうか?
No.2
- 回答日時:
構成が不明なのでわかりませんが…
>BMPファイルを選択した場合には、テキストエリアをクリアしたい
>のですが、javascriptで行うと、エラーになってしまいます
ひょっとして、<input type="file">のエリアをクリアしようとしていませんか?
<input type="file">の内容は保護されているので、スクリプトからは値の取得は可能でも、確か、記入はできなかったような…?
この回答への補足
そうです。<input type="file">のテキストエリアをクリアしようとしています。構成としては、複数の質問があり、その中の回答したい質問に画像をアップロードして、回答内容を記入するというものです。
------------------------------------------------------------
質問
------------------------------------------------------------
回答
------------------------------------------------------------
質問
------------------------------------------------------------
No.1
- 回答日時:
提示されているコードが中途半端です。
質問の意味が抽象的で解せません。
コードを全部出せないなら、もっと具体的に質問してください。
この回答への補足
<span id="img_<?= $QA_datas[$i][0]['id']; ?>"><input type='file' name='img<?= $QA_datas[$i][0]['id']; ?>' id='img_<?= $QA_datas[$i][0]['id']; ?>' onChange="preview_image(this, 'preview_img<?= $QA_datas[$i][0]['id']; ?>','img<?= $QA_datas[$i][0]['id']; ?>,'img_<?= $QA_datas[$i][0]['id']; ?>')"></span>
というPHPコードから、Javascriptを呼び出しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
開いた子ウィンドウにあるボタ...
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
WordpressのCocoonというテーマ...
-
SendKeys()が一番最後に実行さ...
-
HTMLのテキストボックスへのド...
-
JavaScriptでIE上のボタンクリック
-
innerHTML内では改行は禁止?
-
コードレビューをお願いします。
-
BackSpaceしたい(QNo.2734284の...
-
任意の<DIV></DIV>の中に計算結...
-
javaScriptの変数をJavaの変数...
-
JSPファイルにJavaScriptを埋め...
-
JavaScriptのfileオブジェクト...
-
Javascriptで'(シングルクォー...
-
VB.NETで<Input>タグ、<text...
-
javascriptで作成されたテーブ...
-
window.openで開いた子ウィンド...
-
クリックさせたいが、click()が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavascriptでDOM-based XSSの発...
-
onclickが動作しない
-
クリックさせたいが、click()が...
-
追加ボタンを押した際に ok ボ...
-
innerHTML内では改行は禁止?
-
ボタンかリンクをクリックする...
-
formのfileの値をhiddenでも持...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
VB.NETで<Input>タグ、<text...
-
受け取ったパラメータが文字化け
-
JQueryでfunctionに引数としてI...
-
javascriptで作成されたテーブ...
-
jQueryで設定したイベントハン...
-
開いた子ウィンドウにあるボタ...
-
コードレビューをお願いします。
-
ボタンをクリックするとテキス...
-
BackSpaceしたい(QNo.2734284の...
-
URL 判定
おすすめ情報