web-dev-qa-db-ja.com

「送信後」のjQueryオプションはありますか?

ファイルをアップロードし、ページ上のiframeをターゲットとするフォームがあります。ユーザーが「送信」をクリックすると、ファイルの内容が「消去」されます。

私はこれを試しました

$('#imageaddform').submit(function(){
    $('#imagefile').val('');
});

ただし、送信前にフォームがクリアされるため、アップロードされるものはありません。

送信後にクリアするにはどうすればよいですか?

44
polyhedron

他のハンドラがバインドされていない場合、次のようなことができます。

$('#imageaddform').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    this.submit(); // use the native submit method of the form element
    $('#imagefile').val(''); // blank the input
});
37
lonesomeday

Lonesomedayのソリューションはうまくいきましたが、Googleの場合はChromeのようにタイムアウトを追加しない限り、空のフォームデータを送信し続けることがわかりました。

$('#imageaddform').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    this.submit(); // use the native submit method of the form element

    setTimeout(function(){ // Delay for Chrome
        $('#imagefile').val(''); // blank the input
    }, 100);
});
25
Gondrup

次のようなことができます:

$('#imageaddform').submit(function(){
  setTimeout(function() {
    $('#imagefile').val('');
  },100);
});
4

フォームの送信方法は?これが通常のフォームポストである場合、その場合ページは存在しません。ページが更新される前にフォームをクリアして、ユーザーが戻ったときに値が表示されないようにするのかどうか疑問に思っています。

フォームがajaxによって送信された場合、次のことができます

function(){
 $('form1')[0].submit();
 clearForm();
}

質問を見逃しましたか?

2