だから私はいくつかの囲みフォームと2つのネストされたフォームを手に入れました。2つのネストされたフォームはbuttonclickでajaxを使用して評価され、外部フォームには送信ボタンがあります。
簡略化されたマークアップ:
<form id="form1" action="default.asp">
//some fields inside a list with unnecessary text
<input type="text" name="shortdesc"/>
<form id="deleteform" action="delete.asp">
//dynamically generated checkboxes
<input type="checkbox" name="deleter" value="somedocument.txt">somedocument.txt<br>
<input type="checkbox" name="deleter" value="some_otherdocument.doc">some_otherdocument.doc<br>
<input type="button" onclick="console.log(this.form); ajaxcall('delete.asp', this.form);" />
</form>
<form id="addfileform" action="upload.asp">
<input type="file" name="file"/>
<input type="button" onclick="console.log(this.form); ajaxcall('upload.asp', this.form);" />
</form>
<input type="button" value="send" onclick="dataValidation(form1),"/>
</form>
チェックボックスをオンにしてフォームを「送信」すると、コンソールは外部フォームをログに記録しますが、ファイルを選択して「送信」すると、正しいフォームがログに記録されます。
誰かがこれを修正する理由や方法に光を当てることができますか?
明確にするために:これは、いくつかのテキストフィールドを送信してCEOに変更を求めることができるサイト( HTML5ではない)であると想定されています。私は今、ファイル追加を実装することになっています。
フォームはaspclassicで処理および作成されます(苦痛ですが... )。 2つのリダイレクト(アップロード用とアップロードされたファイルの表示用)全体でフォームデータ全体を保持することにあまり熱心ではないためです。 )私はAJAXに行くことにしました。
参考:console.log(document.getElementById('deleteform'))は未定義を返します