Internet Explorer で、ファイル入力に関連付けたアップロード ボタンに大きな問題が発生します。
以下は、通常の送信ボタンを処理する関数です。
<script type="text/javascript">
$(function() {
myClickHandler=function(e){
if (!validation())
return false;
if (!confirm("Are you sure you want to Proceed?" + "\n" ))
return false;
return true;
};
$('#QandA').submit(myClickHandler);
});
</script>
以下に、imageuploadform が次の#QandA
形式のテーブルに追加される方法を示します。
jquery:
function insertQuestion(form) {
var $image = $("<td class='image'></td>");
var $fileImage = $("<form action='imageupload.php' method='post'
enctype='multipart/form-data' target='upload_target_image'
onsubmit='return imageClickHandler(this);'
class='imageuploadform' >" +
"Image File: <input name='fileImage' type='file'
class='fileImage' /></label><br/><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn'
class='sbtnimage' value='Upload' /></label></form>");
$image.append($fileImage);
$tr.append($image);
}
HTML (#QandA フォーム):
<form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">
//Below is button where when clicked, it will append the image upload form into the table
<table id="questionBtn" align="center">
<tr>
<th>
<input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
</th>
</tr>
</table>
//image upload form is appended into table below:
<table id="qandatbl" align="center" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th class="image">Image</th>
</tr>
</thead>
</table>
<div id="qandatbl_onthefly_container">
<table id="qandatbl_onthefly" align="center" cellpadding="0" cellspacing="0" border="0">
<tbody>
</tbody>
</table>
<p><input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" /></p>
</form>
前述のように、画像のアップロード フォームは#QandA
from に追加されます。このためmyClickHandler=function(e)
、「アップロード」ボタンをクリックすると、その機能がまったくトリガーされないにもかかわらず、トリガーされるという問題が発生していると思います。一番上のフォームの「Submit Details」ボタンのみがmyClickHandler()
関数をトリガーする必要があります。
Submit Details
だから私の質問は、ボタンだけがmyClickHandler()
機能をトリガーするために何を変更する必要があるのでしょうか?
アップデート:
var $video = $("<td class='video'></td>");
var $fileVideo = $("<form action='videoupload.php' method='post'
enctype='multipart/form-data' target='upload_target_video'
onsubmit='return videoClickHandler(this);'
class='videouploadform' >" +
"Video File: <input name='fileVideo' type='file'
class='fileVideo' /></label><br/><br/><label class='videolbl'>" +
"<input type='submit' name='submitVideoBtn'
class='sbtnvideo' value='Upload' /></label></form>");
$video.append($fileVideo);
$tr.append($video);
var $audio = $("<td class='audio'></td>");
var $fileAudio = $("<form action='audioupload.php' method='post'
enctype='multipart/form-data' target='upload_target_audio'
onsubmit='return audioClickHandler(this);'
class='audiouploadform' >" +
"Audio File: <input name='fileAudio' type='file'
class='fileAudio' /></label><br/><br/><label class='audiolbl'>" +
"<input type='submit' name='submitAudioBtn'
class='sbtnaudio' value='Upload' /></label></form>");
$audio.append($fileAudio);
$tr.append($audio);