私はファイルアップロードスクリプトを作成しています。ファイルをアップロードする必要のあるディレクトリがいくつかありますが、これを行うには単一のフォームを使用しようとしています。フォームクラスをファイルアップロードに変更する
これで、JQUERYを使用して単一のフォームを使用するようにフォームクラスを変更できます。ここで
の形式である:
<form method="post" class="addFileClass" id="addFileForm" enctype="multipart/form-data">
<input type="file" class="fileToUpload" name="fileToUpload" id="fileToUpload" />
<button type="button" id="newfilesubmit">Upload</button>
</form>
これらのリンクは、私は、フォームクラスの変更を開始するために使用していますものです:
<a href="#" class="addDentalFile">Add Dental File</a>
<a href="#" class="addLifeADDFile">Add Life ADD File</a>
.....several more.....
これらのhrefを使用して、私は、フォームクラスを変更するためのjQueryを使用することができます:
$('.addDentalFile').on('click', function(e)
{
e.preventDefault();
$('#addFileForm').trigger('reset');
$('#addFileForm').removeClass();
$('#addFileForm').addClass('dentalFileForm');
$('.addFileModal').modal('show');
});
......same format for the other links......
上記を使用して、フォームID#addFileFormのクラスを正常に変更できます。
これは私が立ち往生している場所です。現在のアップロードスクリプトは次のとおりです。
$('#newfilesubmit').on('click', function()
{
var formData = new FormData($('#addFileForm')[0]); // <-class should be passed here, but how when the class will be different?
$.ajax({
url: 'api/uploadFile.php',
data: formData,
async: false,
contentType: false,
processData: false,
cache: false,
type: 'POST',
success: function(data)
{
// doing success stuff
},
fail: function()
{
// doing fail stuff
}
});
});
上記のスクリプトは、IDが同じ場合に機能します。しかし、今ではフォームのクラスを使用しているので、JQUERYは新しいクラスを識別できる必要があります(私はそれを正しく言うことを望みます)。
このように、新しいクラスが渡されるたびに変数formDataを変更するにはどうすればよいですか?これが不可能な場合は、私に知らせてください。私が正しくあなたが#addFileForm
に基づいていくつかの動作を変更したいあなたの質問を理解していた場合
var formData = new FormData($('form[class^="file-"]')[0]);
フォーム自体が変更されていない場合、それは何ですか?フォーム自体ではなく、クラス名に基づいてajax URLを変更したいと思うようです。この推論が正しくない場合は、質問を更新してより明確にしてください。 –
両方のタイプのリンクで同じフォームを使用して送信していますが、1つのajaxサブミット操作もあります。フォームのクラスを変更して、どのようなメリットを享受したいですか?あなたは説明できますか? – gschambial
@gsambial - すべての正直なところに、私は単なる別のファイルが提出されているときに単一のフォームを利用する最良の方法を見つけることを試みています。フォームクラスを変更することが悪い考えであれば、おそらく私はそのルートに行くべきではありません。 –