2017-01-19 52 views
1
$(function() { 
    $("#save-chart-form").submit(function(event) { 
     $("#saveChartButton").prop('value', 'Please be patient'); 
     // event.preventDefault() // works with this 
     // $('#save-chart-form').submit(); // Doesn't work 
    }); 
}); 

我在單擊#saveChartButton時在窗體#save-chart-form上運行此項。 因此,單擊按鈕時,該按鈕的文本更改爲「請耐心等待」。jquery提交價值變化將無法正常工作

,除非我把一個preventDefault事件這並不在所有的工作。 有沒有辦法在表單提交上執行任何jQuery操作? 我嘗試了許多其他解決方案,都失敗了。我也無法得到$('#save-chart-form').submit()做任何事情,這將是一個解決方案。我使用jQuery 3.1.1

編輯:這是一個瀏覽器的問題:它工作正常的Firefox。如Rory McCrossan所述,Safari在卸載請求後不處理任何內容。

+0

使用val()not prop()來設置值。 – epascarello

+0

爲什麼你會在表單提交中重新提交表單?它已經提交。 – epascarello

回答

0

的問題是因爲在大多數瀏覽器的UI將不再更新一次卸載該頁面的請求時(即表單提交已作出)。一種解決方法是改變click事件按鈕本身的按鈕下的文本,而不是submit事件form的。試試這個:

$("#saveChartButton").click(function() { 
    $(this).prop('value', 'Please be patient'); 
}); 

Working example

注意的變化是唯一的頁面卸載之前小的時候可見。

+0

的確,此外,這個問題隻影響Safari,我不明白它在Firefox中。昨天我遇到了同樣的問題:/ –

+0

它可以是瀏覽器特定的。我可以在Chrome中看到相同的行爲。更新更清晰。 –

1

不使用$('#save-chart-form').submit()。這是多餘的。

$(function(){ 
    $("#save-chart-form").submit(function(event){ 
     $("#saveChartButton").prop('value', 'Please be patient'); 
    }); 
}); 
0

嘗試顯示文本「請耐心等待」,在其他HTML元素,而不是#saveChartButton,因爲鮑勃迪倫在已經提交的可能會造成混淆的JS引擎的形式元素的值。

例如

$("#save-chart-form").submit(function(event) { 
    $("#msgBox").html('Please be patient'); 
});