0

jquery.submit() メソッドを使用してページを更新せずに、サイレントにフォームを送信しています。ユーザーがファイルを選択してアップロード ボタンをクリックすると、アップロードが開始され、キャンセル ボタンが有効になります。しかし、このアップロードを途中でキャンセルする方法がわかりません。公式のjqueryドキュメントによると

「イベントオブジェクトで .preventDefault() を呼び出すか、ハンドラーから false を返すことで、送信アクションをキャンセルできます」が、私の場合はこれを使用する方法がわかりませんでした。以下は、フォームを送信するために使用しているコードです。

$('#button').click(function() {
    $('#form').submit();
});
4

2 に答える 2

0

jquery .submit() メソッドの使用方法について混乱があると思います。jquery docsから:

submit イベントは、ユーザーがフォームを送信しようとしたときに要素に送信されます。要素にのみアタッチできます。<input type="submit">明示的な、 <input type="image">、またはをクリックするか<button type="submit">、特定のフォーム要素にフォーカスがあるときに Enter キーを押すと、フォームを送信できます。

これが意味することは、このメソッドが実際に行うことは、フォームの送信イベントを処理することだけだということです。イベントをキャンセルすると、ファイルのアップロードがキャンセルされます。間にはありません。ファイルのアップロードを許可しているか、フォームの送信 (アップロード) を完全にキャンセルしています。また、.preventDefault() を使用するには、次のようになります。

$('#button').click(function() {
    $('#form').submit();
});

$('#form').submit(function(e) {
    e.preventDefault();
    // could also use return false; as a previous poster 
    // suggested but I have found e.preventDefault() to be more reliable
});

あなたがやろうとしていることを達成するために、いくつかのサードパーティのプラグインを調べる必要があるかもしれません. そのようなプラグインの 1 つがUploadifyです。

于 2012-07-19T14:00:26.213 に答える
0

送信がサーバーに到達すると、それ (フォーム) でできることはほとんどありません。

これを行うreturn false;と、せいぜいサブミットの発生を防ぐことができます。

于 2012-07-19T13:50:02.703 に答える