0

送信をクリックした後、ページ上のすべての送信ボタンとすべてのAJAXリンクを無効にするこのコードがあります。クリックされたイベントのクローンを作成して、サーバー側でどの送信が押されたかを確認します。これはIEとFirefoxで完全に機能しますが、Chromeでは何も送信しません。クローンがDOMに正しく挿入され、コンソールにエラーが記録されていないことがわかるため、送信が妨げられているようです。

// Block all other submit and ajax requests. The subscribe users burron is avoided because it handles this by itself
$( 'input[type=submit]' ).not( '#ai1ec_subscribe_users' ).click( function() {
    block_all_submit_and_ajax( this );
} );
// Disables all submit buttons after a submit button is pressed.
var block_all_submit_and_ajax = function( el ) {
    // Clone the clicked button, we need to know what button has been clicked so that we can react accordingly
    var $clone = $( el ).clone();
    // Change the type to hidden
    $clone.attr( 'type', 'hidden' );
    // Put the hidden button in the DOM
    $( el ).after( $clone );
    // Disable all submit button.
    $( '#facebook input[type=submit]' ).attr( 'disabled', true );
    // unbind all click handler from ajax
    $( '#facebook a.btn' ).unbind( "click" );
    // Disable all AJAX buttons.
    $( '#facebook a.btn' ).click( function( e ) {
        e.preventDefault();
        e.stopImmediatePropagation();
    } );
}

どうやら編集問題は行にあります

$( '#facebook input[type=submit]' ).attr( 'disabled', true );

私がコメントすると、それはクロームでも機能するからです。私はjQuery1.6を使用しています(ただし、これはワードプレスプラグインであるため、バージョンが異なる場合があります)

誰もが何が悪いのか知っていますか?

4

2 に答える 2

2

ボタンが無効になっている場合、フォームは送信されません。setTimeOutを追加してトレッドを変更すると、次のように動作します。

 setTimeout(function() {
$( '#facebook input[type=submit]' ).attr( 'disabled', true );

},0);

タイムアウトの時間として0でも機能します

于 2012-05-28T17:46:27.497 に答える
0

HTMLを見ずに言うのは難しいです。セレクターをいじりたいかもしれません。複数のことを試すことができます:

  $("#facebook [type=submit]").attr('disabled',true);

あるいは

  $("[type=submit]").attr('disabled',true);

多分あなたはそれを?の<button>代わりに持っているからです<input>

  $("#facebook button[type=submit]").attr('disabled',true);
于 2012-05-28T17:21:44.080 に答える