2

私は次のフォームを持っています

<form name="myForm" id="myForm" method="post" enctype="multipart/form-data" action="script.php">

そしてこのjQuery

$(document).ready(function() {

  $('#previewButton').click(function() {
    // Change form's target to be in a new window.
    $('#myForm').attr('target', '_blank');

    /*
     * Create a hidden input field and add it to the form to designate that the
     * action the form is performing is a preview action.
     */
    $('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

    // Submit the form.
    $('#myForm').submit();

    // Change the form's target to be the current page again.
    $('#myForm').attr('target', '');

    /*
     * Remove the hidden input field we just added so that the form can submit
     * normally.
     */
    $('#previewAction').remove();

    return false;
  });

});

私は2つの異なるページにこれとまったく同じ2つのコードを持っています。1つは、[プレビュー]リンクをクリックすると、フォームが新しい空白のウィンドウに送信されます。他のページでは、フォームが送信されず、[プレビュー]をクリックしてもウィンドウが開きません。

.click()が実行されています。これは、.click()にalert()を呼び出して、アラートボックスが表示されたためです。

以下を実行すると、フォームの.submit()が他の場所でオーバーライドされていないことがわかります。

var submitEvents = $('#myForm').data("events").submit;
jQuery.each(submitEvents, function(key, value) {
  alert(value);
});

また、Javascriptエラーは発生しません。

そして、なぜプレビューをクリックしても(どうやら)何も起こらないという考えはありますか?

4

3 に答える 3

6

<input>id='submit'のボタンがあったことがわかりました。jQueryはこれが気に入らなかった。

于 2010-02-28T03:05:09.597 に答える
0

多分ちょっとしたことですが:

$('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

なぜあなたは逃げるのですか"、そしてまた同じ線で逃げないのですか?"書き直し"'逃げるのを忘れていませんか?

また、targetformにとっては新しいことです:)

編集:

多分htmlまたは他のjavascriptものはあなた/私たちにいくつかの手がかりを与えるかもしれません-そうでなければ私はあなたと同じように迷子になります。

于 2010-02-24T22:20:50.127 に答える
0

次のように、$()なしでappendメソッドを使用してみてください。

$('#myForm').append('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />');

もう1つ、FirefoxにFirebugアドオンを追加できます。これは、JavaScriptをデバッグするための優れたツールです。https://addons.mozilla.org/en-US/firefox/collection/firebug_addons

于 2010-02-25T12:23:17.373 に答える