2017-01-23 30 views
1

我有一段艱難的時間措辭我的問題。IE 11仍然提交沒有.submit()內部點擊處理程序的表單

基本上,當單擊表單中的提交按鈕時,我希望按鈕被禁用,並且按鈕文本被替換爲字體真棒圖標,直到POST請求通過。我有以下jquery。

$('div').on('click', '.btn-disabler', function() { 
    $(this).append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true); 
    $(this).find('.btn-label').addClass('invisible'); 
    $(this).css("background-image", "none"); 
    if ($(this).parents('form') && !$(this).hasClass('btn-facebookauth')) { 
     $(this).parents('form').submit(); 
    } 
    }); 

而我的表單的按鈕部分。

<form> 
    <button name="button" type="submit" class="btn btn-primary submit-button btn-disabler"> 
     <span class="btn-label">Log in</span> 
    </button> 
</form> 

我的問題是IE 11在IE瀏覽器與上面的代碼,點擊後,按鈕上的文字消失,但英足總圖標不顯示,按鍵只是空白。表單提交正常。

當我刪除if語句:

$('div').on('click', '.btn-disabler', function() { 
    $(this).append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true); 
    $(this).find('.btn-label').addClass('invisible'); 
    $(this).css("background-image", "none"); 
    }); 

按鈕正確顯示的圖標,並提交表單?爲什麼當我刪除.submit()時提交表單?在chrome中,當我刪除if語句時,該按鈕的圖標正確更改,但表單不提交它只是掛起(如預期的那樣)。

我基本上是試圖排除圖標不出現後單擊IE中的提交按鈕,而它在鉻中工作正常。

+2

你試圖返回false? – 2pha

+2

給你的表單一個id並在jQuery中寫一個提交處理程序。在提交處理程序中,添加一個event.preventDefault(); 。這會阻止提交表單。 –

+0

@ 2pha我會在那裏放? – user4584963

回答

1

的Javascript

// wait for document ready before trying to attach listener. 
$(document).ready(function() { 
    // Add a submit listener to the form 
    $('#myform').submit(function(e){ 
    // save this jquery object into a variable as we might access this a few times. In this case it will be the form. 
    var theform = $(this); 
    // save the button to a variable. 
    var thebtn = theform.find(".btn-disabler"); 
    // prevent the form from submitting (could also return false at the end of this function) 
    e.preventDefault(); 
    thebtn.append("<i class='fa fa-spinner fa-pulse btn-loader'>").disable(true); 
    theform.find('.btn-label').addClass('invisible'); 
    thebtn.css("background-image", "none"); 
    if (!thebtn.hasClass('btn-facebookauth')) { 
     theform.submit(); 
    } 
    }); 
}); 

HTML

<form id="myform"> 
    <button name="button" type="submit" class="btn btn-primary submit-button btn-disabler"> 
     <span class="btn-label">Log in</span> 
    </button> 
</form> 

上述所有未經測試

1

提交按鈕應該提交表單,所以它按預期在IE中。如果您想通過form.submit()手動提交表單,請使用類型按鈕的按鈕。

<form> 
 
    <button name="button" type="button" class="btn btn-primary submit-button btn-disabler"> 
 
     <span class="btn-label">Log in</span> 
 
    </button> 
 
</form>

相關問題