プロが教える店舗&オフィスのセキュリティ対策術

javascriptで<INPUT type=file name=faile1>を
file1.click();でクリックしてファイル選択ダイアログを表示させようとしても表示しません。

formから
<INPUT type=file id=file1 name=image style="DISPLAY: none">
<INPUT type="image" src="./img/up02.jpg" id=button1 value=Button name=button1
を出すとファイル選択ダイアログが表示されます。

独自のボタンイメージでファイル選択ダイアログを表示したいために
<INPUT type="image"をクリックされたときにjavascriptで
<INPUT type=file をクリックさせています。

したいことは、独自のボタンで、ファイル選択ダイアログを表示して、
phpに選択されたファイルパスを送信したいです。

下記コードをご参考にしてください。
<html>
<head>
<title>upload test</title>
</head>
<body>
何かの編集ページとか
<iframe name="uploader" src="" style="width:0px;height:0px;border:0px;"></iframe>
<form name=form1 target="uploader" method="POST" action="http://*.**.**.*/test.php" enctype="multipart/form-data">
<INPUT type=file id=file1 name=image style="DISPLAY: none">
<INPUT type="image" src="./img/up02.jpg" id=button1 value=Button name=button1 LANGUAGE=javascript onclick="return button1_onclick()"/>
</form>
<script type="text/javascript">
<!--
function button1_onclick() {
window.alert("クリックされた");
file1.click();
document.form1.submit();
}
//-->
</script>
</body>
</html>

A 回答 (1件)

直接の原因は


 >file1.click();
で要素が取得できていないからではないでしょうか?

引数で this.form を渡してあげるか、あるいは直接に
 document.forms["form1"].elements["file1"].click();
みたいに指定してあげればよろしいかと。

ただし、IE以外はテキストボックスをクリックできないみたいなので、DOM Event で発火してあげたほうがよさそう。
 http://d.hatena.ne.jp/language_and_engineering/2 …


ついでに・・・
ダイアログをキャンセルした場合はどうするのだろうか?
    • good
    • 0
この回答へのお礼

コメント入れたはずなのに??再度入力してます

ありがとうございます
おっしゃる通りです。気づけなかったorz
javascriptのみで今回の機能の実装はできないと判断したので
違ったアプローチで行きたいと思います。

出来るだけ、javascriptとhtmlで実装したかったのですが
そうも言ってられないので、ajaxなどでアプローチしたいとも思います。

お礼日時:2011/01/24 18:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!