2011-08-11 20 views
1

私はテキストボックスとボタンasp.net Ajaxの問題

テキストボックスは、ページのロード後にjQueryを使用して設定されていることへのonblurイベントを持っていると、フォームを抱えています。

ボタンには、テキストボックスにテキストを設定するクリックイベントがあります。問題は、イベントが発生するたびに、onblurイベントがなくなることです。この問題の解決方法

これは単なる例です。私はjqueryを使用していくつかの値を設定されているページ上のいくつかのコントロールを持っています。ドロップダウンのajaxイベントの後、すべての値が失われます。

この問題を示すサンプルコード

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

<!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 runat="server"> 
    <title></title> 
    <script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

    <script language="javascript"> 

     var ctrl_name = "#<%=name.ClientID %>"; 

     $(function() { 
      $(ctrl_name).blur(
       function() { 
        alert("this texbox has lost its focus"); 
       } 

      ); 
     }); 

    </script> 


</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 



     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
      <asp:TextBox ID="name" runat="server"></asp:TextBox> 
      <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 
     </ContentTemplate> 
     </asp:UpdatePanel> 

    </div> 
    </form> 
</body> 
</html> 

分離コードコードです:あなたがページ上で自分の価値観を失っている理由は、あなたのbutton_clickは、サーバー側のメソッドであるということです

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      name.Text = "testing Ajax"; 
     } 
    } 
} 
+1

この –

+0

コードを追加します –

+0

サンプルコードを追加 –

答えて

0

常にページがリロードされます。

このメソッドをクライアント側から呼び出して、ajaxで使用できるようにする必要があります。それはWebMethodまたはScriptMethodになる必要があります。

私はこの文章を最近使用していないので、私の構文は100%正確ではないかもしれませんが、うまくいけば、これはあなたが正しい方向を指していることを意味します。

あなたのボタンのクリック方法が形にする必要があります:

[WebMethod] 
public static void Button1_Click() 
{ 
... 
} 

、あなたはこのようにそれを呼び出す:誰も答えることができるようにするためにあなたには、いくつかのコードをポストする必要があります

<input ID="Button1" Text="Button" onclick="PageMethods.Button1_Click()" />