2010-02-19 208 views
2

在我的应用程序中,我需要禁用按钮,一旦它被点击,以便用户不应单击多次。应用程序是MVC ASP.NET我已经在普通的asp.net应用程序中完成了这项工作。 我尝试下面的代码行,但它不工作单击按钮后禁用按钮

在此先感谢

编辑 我怎样才能实现这个使用JavaScript?

+0

你似乎有asp.net mvc的缺乏了解。查看http://www.asp.net/(S(pdfrohu0ajmwt445fanvj2r3))/learn/mvc/上的一些视频。 – 2010-02-19 04:22:43

回答

1
<button type="button" onclick="this.disabled = 'disabled';">Click Me!</button> 

虽然Button Web控件呈现为提交:

<input type="submit" onclick="this.disabled = 'disabled';" value="Submit" /> 
+1

抱歉,它不会在MVC应用程序中工作。您可以在ASP.NET应用程序中执行此操作,但不能在MVC中执行 – batwadi 2010-02-20 03:17:45

+0

@prakash:无论ASP.NET还是ASP.NET-MVC,这两种方法都可以工作。你能发布你试过的东西吗? – 2010-02-20 05:05:57

+0

没有你尝试在MVC ASP.NET它不会工作,请检查 – batwadi 2010-02-24 05:29:26

0

你使用jQuery来禁用或隐藏,甚至按钮@prakash?

如果你的按钮的ID是“btnClickMe”,那么下面的jQuery将完成这项工作。

$("#btnClickMe").hide(); 

您还可以使用jQuery设置di​​sbaled属性;

$("#btnClickMe").attr("disabled","disabled"); 

上面的一个未经测试,但应该工作。

+1

NUP它不工作..它禁用按钮,但表单不提交 – batwadi 2010-02-24 05:32:10

5

我发现,IE8(我不确定其他版本的IE),你不能提交表单,如果你禁用点击事件按钮。所以我想出了一个替代解决方案。隐藏点击的按钮并放置一个新的禁用按钮。下面的代码:

$().ready(function() { 
    $("someButtonSelector").click(function() { 
    $(this).hide(); 
    $(this).after('<input type="button" disabled="disabled" value="' + $(this).val() + '" />'); 
    return true; 
    }); 
}); 
+0

谢谢,它为我工作的解决方法! – 2013-03-06 13:21:56

3

你可以试试这个:

onclick="if (this.getAttribute('clicked') == '1') { return false; } else { this.setAttribute('clicked', '1'); }" 

它不会关闭任何东西,只是防止click事件是第一次点击后。

+0

+1是一个伟大的和被低估的解决方案。国际海事组织,你不需要真正看到按钮的禁用样式。让用户尽可能多地点击他们想要的次数。所有开发人员关心的是避免重复的帖子。 – oscilatingcretin 2014-03-17 18:14:06

0

我发现,如果你禁用甚至删除按钮或输入元素,它会停止回调服务器,最简单的方法来处理这是一个hide(),因为你没有删除输入的功能按钮/任何

$('input_selector').click(function() { 
     $(this).hide(200/whatever); 
     $(this).before('<p>Waiting for server to respond?!?</p><br/>') 
    }); 

因为它是一个隐藏的br是确保p标签在它上面。 可能有更好的方法,我愿意提供建议。

0

这工作得很好的欢迎,并很容易理解:

var myButton = $('input:submit'); 
var waitMessage = 'wait please...'; 
myButton.click(function() { 
    if (bottone.val() == waitMessage) { 
     return false; 
    }; 
    myButton.val(waitMessage); 
    console.log('iClicked'); // this line is for testing only, it can be removed. 
}); 
0

这是我的一个按钮调用的MVC动作,然后自行禁用:

<button class="btn blue pull-right" onclick="location.href='@Url.Action("Index", "GetData", new { page = Model.PageNumber + 1, sortOrder = Model.CurrentSort, fromDate = Model.FromDateParam, toDate = Model.ToDateParam, terminatingpoint = Model.TerminationPointParam, SurecallNo = Model.SurecallNoParm, CallerID = Model.CallerIDParm, outcome = Model.OutcomeParm, pagesize = Model.PageSize })';this.disabled = 'disabled'" >Next ></button> 
0
var but = 1; 
function f() { 
    if(but == 1) { 
     alert("Hello World!"); 
     but = 0; 
    } 
} 

希望它帮助。

0

这将工作:

OnClientClick="if (this.getAttribute('clicked') == '1') { 
    return false; 
} else { 
    this.setAttribute('clicked', '1'); 
}"