1

FormData で送信される jquery フォームがあります (フォームデータが利用できない場合は iframe を使用します) が、フォームが送信されると別のフォームが生成されます。このフォームは jquery 関数を使用して送信するため、jquery 関数はフォームにバインドされていないように見えるため、代わりに event.stopDefault(); を使用します。デフォルト、つまりtest.phpに送信します

別の言葉で私の質問は次のとおりです。フォームが ajax によってロードされたときに、jquery 関数を新しいフォームにリロード/バインドする方法/方法はありますか?

コード例:

私が試したjsコード:

$(document).on('#resize', submit, function(e) {
            e.preventDefault();
            e.stopPropagation();
            if(window.FormData === undefined){
                alert("Form Data not supported");
            }
            else{
                var iframe = $('<iframe name="resizeiframe" id="resizeiframe" style="display: none" />');

                $("body").append(iframe);

                var form = $('#resize');
                form.attr("action", "resizer.php");
                form.attr("method", "post");
                form.attr("enctype", "multipart/form-data");
                form.attr("encoding", "multipart/form-data");
                form.attr("target", "postiframe");
                form.attr("file", $('#resizeimage').val());
                form.submit();

                $("#resizeiframe").load(function () {
                    iframeContents = $("#resizeiframe")[0].contentWindow.document.body.innerHTML;
                    $("#textarea").html(iframeContents);
                    $("#resizeiframe").remove();
                    $(document).find('#resizeiframe').remove();
                });
            }


});

ajax によって生成された後に送信されたが、関係なく送信されたフォーム:

<form id="resize" action="resizer.php" method="post" onsubmit="return checkCoords();">
                <input type="hidden" id="x" name="x" />
                <input type="hidden" id="y" name="y" />
                <input type="hidden" id="w" name="w" />
                <input type="hidden" id="h" name="h" />
                <input type="hidden" id="resizeimage" name="image" value="'.$new_name.'"/>
                <input type="submit" value="Crop Image" class="btn btn-large btn-inverse" />
            </form>

ps onsubmit を削除しようとしましたが、違いはありません。

4

2 に答える 2

0

最初の行を次のように変更するだけです。

$(body).on('submit', '#resize', function(e) {

IS が存在する要素にバインドする必要がありますpageLoad

于 2013-09-10T20:58:35.910 に答える