2017-01-19 149 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'); 
});