最近在很多网站上,我看到按钮在按下后会被加载/思考图像替换,以防止双击并确保用户在页面闪烁之前知道某些事情正在发生。在这种情况下,实际上没有发生任何异步 - 只是常规表单提交。
知道有关如何执行此操作的任何好教程吗?
答案 0 :(得分:10)
走最简单的方法。说你的按钮是btnSubmit。
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" />
<div id="divMsg" style="display:none;">
<img src="../images/loading.gif" alt="Please wait.." />
</div>
现在使用jquery,点击按钮:
<script type="text/javascript">
$('#btnSubmit').click(function(){
$(this).attr('disabled','disabled');
$('#divMsg').show();
//your client side validation here
if(valid)
return true;
else
{
$(this).removeAttr('disabled');
$('#divMsg').hide();
return false;
}
});
</script>
将禁用提交按钮,动画图像loading.gif将显示。页面将回发。好处是如果验证失败,您可以再次启用提交按钮并隐藏加载图像。在这种情况下,显然您将显示错误消息。
答案 1 :(得分:4)
虽然简单地用图片替换提交可能会有效,但删除该按钮可能会阻止提交输入的值(就像它被禁用时一样)。这可能会导致某些应用程序出现问题,这些应用程序依赖于将提交的值发送到服务器 - 例如,测试用户按下的提交按钮或使用相同的控制器执行许多操作。
对于这些情况,您可以使用另一种效果一样的方法 - 隐藏提交并添加图像:
$(document).ready(function() {
$('input[type="submit"]').click(function() {
$(this).css('display', 'none');
$('<img>').attr('src', 'http://www.mayla.ro/App_Themes/Glass/Editors/Loading.gif').insertAfter($(this));
});
});
答案 2 :(得分:2)
使用.replaceWith()
:
$(".submitButton").click(function () {
$(this).replaceWith("<img src='loading.gif'>");
});
答案 3 :(得分:1)
我这样做的方式:
$(document).ready(function () {
$('.class_name').click(function () {
$(this).parent().append('<img src="data:image/gif;base64,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" />');
$(this).hide();
});
});
答案 4 :(得分:0)
只需删除提交按钮并将其替换为您的图像(通过onclick事件执行此操作)。
答案 5 :(得分:0)
我认为你正在寻找这个,按钮在onclick事件中有这个功能updatemycartpage()
<script language="JavaScript">
function updatemycartpage(index,itemId,itemnumber){
jQuery('#Page').html('<p><center><img src="/images/ajax-loader.gif"/></center></p>');
$.post("/cart.php", {
'hidItemId[]' : itemId,
'hidLineId[]' : itemnumber
},function(data){
document.location.href ="/cart.php";
});
}
</script>
答案 6 :(得分:0)
这将使用
形式的提交图像替换所有提交输入$(function() {
$("form").submit(function() {
$(":submit").replaceWith('<img src="/loading.gif" />');
});
});
如果用户点击输入表单字段,您可能还想再次禁用提交表单...
$(function() {
// only run this handler on the first submit of the form
$("form").one("submit", function() {
// replace all submit inputs with an image
$(":submit").replaceWith('<img src="/loading.gif" />');
// don't let this form be submitted again
$(this).submit(function() { return false; });
});
});
答案 7 :(得分:0)
事件可以作为标准练习在表单上绑定
<script type="text/javascript">
$('form').submit(function(){
$('#btnSubmit').attr('disabled','disabled');
$('#divMsg').show();
//your client side validation here
if(valid)
return true;
else
{
$(this).removeAttr('disabled');
$('#divMsg').hide();
return false;
}
});
</script>
答案 8 :(得分:0)
以上任何一项&#34;替换&#34;策略会起作用,但要记住一件事:如果你没有回发(例如webforms),但是发布到不同的页面(例如MVC),用户将能够点击回来。此时按钮将被隐藏,您将看到的只是一个微调器。
我一直遇到这个问题,发现如果您将unload
标记的BODY
属性设置为空白""
,那么这将是&#34;默认&#34 ;页面恢复到原始状态。我想这会清除浏览器的页面缓存版本,因此它会知道回到隐藏微调器的原始版本。我添加了这个空白卸载后,它修复了问题。到目前为止,我已经在FF和Chrome上试过了