1

HTMLの場合:

<form id="deleteMessages" name="deleteMessages" action="/deleteInboxMessage" method="post">
    <!--some input elements here-->

    <input type="submit" id="delete" value="delete"/>
</form>

jqueryを使用してフォームを送信します。

$('#delete').bind('click', function(e){
    e.preventDefault();
    //some logic here
    $('#deleteMessages').submit();
});

Firefox、IE、Chrome、Operaで動作しますが、Safari(Windowsの場合)では動作しません。Safariで起こったことは、ページと同じコンテンツで新しいタブを開くことです。どうしたの?Safariが新しいタブを開くのはなぜですか?

送信する代わりにボタンも試しましたが、同じ問題が発生しました。

4

2 に答える 2

1

私もこの問題を経験しましたが、適切な修正が見つかりませんでした。

代わりに、私はこれをしました:

まず、送信をボタンに変更します。

<input type="button" value="Submit" class="btn loading">

Jquery Validate をインポートします。これにより、送信前に「必須」フィールドが検証されます。

<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/jquery.validate.min.js"></script>

次に、このコードを追加します。設定した任意のボタンで動作しますclass="btn loading"

$(function(){
        $(".btn.loading").click(function(e)
        {
            var btn = $(this);

            if (btn.closest('form').valid()) {
                btn.html('<i class="fa fa-refresh fa-spin"></i> Uploading...Please wait').prop("disabled",true);
                setTimeout(function() {
                    btn.closest('form').submit();
                },100);
            }
        });
    });

タイムアウトが必要です。そうしないと、Safari で .submit() を呼び出した瞬間に、他のすべてがキューで遅延します。

Mac の Safari、Chrome、Firefox で動作します (おそらく Windows でも)。

編集: Windows 7 の IE9 でもテストされ、動作しています。

$_POST['SubmitButtonName']また、これを行うと、投稿された変数のリストから削除されることを忘れないでください。に対してチェックを行っている場合は、$_POST['buttonName']必ずロジックを変更するか、非表示フィールドを追加してください。

于 2014-10-20T10:08:42.637 に答える