此代码阻止我的表单提交(仅限Chrome,适用于IE和Firefox)

时间:2012-05-28 17:08:32

标签: javascript jquery google-chrome submit

我有这个代码,在我点击提交后,它会简单地禁用我页面上的所有提交按钮和alla 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 );

因为如果我评论它也适用于chrome。我使用的是jQuery 1.6(但它是一个wordpress插件,因此版本可能会有所不同)

任何人都知道什么是错的?

2 个答案:

答案 0 :(得分:2)

当您的按钮被禁用时,表单未提交添加setTimeOut以更改步骤,我将工作类似

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

},0);

即使超时时间为0也可以正常工作

答案 1 :(得分:0)

没有看到HTML,很难说..你可能想要搞乱选择器。你可以尝试多种方法:

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

甚至

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

因为您可能将其作为<button>而不是<input>

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