標籤:代碼 ntb click 沒有 lan nbsp 處理 span check
轉自:http://gaterking.blog.51cto.com/69893/301691/
今天遇到一種小情況,想要在.net的伺服器控制項asp:button按下去時通過OnClientClick進行用戶端處理,成功就提交到後台,提交後button變灰,disabled=true。但問題來了,在 OnClientClick="return check();",js函數check如果設定button..disabled = true,將不再提交。
上網查了很多資料,最後總結了一下,成功完成。
1、設定asp:button屬性UseSubmitBehavior="false",這樣button type將變成“button”,而不是預設的“submit”;
2、js函數中調用__doPostBack進行提交,這步很關鍵,__doPostBack可以讓用戶端的js觸發伺服器端的事件(頁面會回傳),網上很多的教程都沒有這部,可能他們都不是在OnClientClick做驗證處理,不需要return的原因。
下面這兩段代碼可以參考下。
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebTest.aspx.cs" Inherits="DoubleClick.WebTest" %>
-
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head id="Head1" runat="server">
- <title>Untitled Page</title>
- <script type="text/javascript">
-
- function check() {
- if (document.getElementById("TextBox1").value == "") {
- alert("空");
- return false;
- } else {
- document.getElementById("Button4").disabled = true;
- __doPostBack(‘Button4‘, ‘‘);
- return true;
- }
- }
- </script>
- </head>
- <body>
- <form id="form1" runat="server" >
- <div>
- <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
- <asp:Button ID="Button4" UseSubmitBehavior="false" runat="server" Text="My" OnClientClick="return check();" OnClick="Button1_Click" />
- </div>
- </form>
- </body>
- </html>
- public partial class WebTest : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
-
- protected void Button1_Click(object sender, EventArgs e)
- {
- Response.Write(TextBox1.Text);
- System.Threading.Thread.Sleep(2000);
- }
- }
ASP .Net提交時禁用Button