允许在keydown上回发后输入文本框

时间:2014-05-15 23:04:39

标签: c# javascript asp.net postback onkeydown

我正在尝试创建一个在keydown上执行ac#函数的文本框,所以我订购了一个javascript函数来回发文本框的keydown事件,基本上,发生的事情是我在autopostback = true和c#函数上有文本框只有在框外点击时才会执行,因为自动回复,所以我想达到相同的目标,但没有点击外面,只有keydown。这是我的代码:

   <script language="javascript" type="text/javascript">
   function RefreshBox() 
 {
   __doPostBack('<%= SomeTextBox.ClientID%>', '');
 }

   <asp:TextBox ID="SomeTextBox" runat="server" onkeydown="RefreshQueryBox();" 
   AutoPostBack="True" ValidationGroup="1" 
   ontextchanged="AutoText_TextChanged" ViewStateMode="Enabled"></asp:TextBox>

这里是.cs

        protected void AutoText_TextChanged(object sender, EventArgs e)
{
// Some actions here
}

问题是,使用此代码,整个页面在keydown上刷新,用户无法键入。救命! :P

由于

1 个答案:

答案 0 :(得分:0)

您的解决方案的问题在于,当您导致回复时,您基本上正在重新启动生命周期。这意味着您的数据也无法正确保留。我建议使用带有ajax的Web服务调用来执行您的操作。

function AutoText(){
$.ajax({
  type: 'POST',
  url: '../Services/UpdateService.asmx/AutoText',
  data: '',
  contentType: "application/json; charset=utf-8",
  success: function (data) {
          //use the data.d to get the info passed back from webservice. then 
          add your logic to update your html
  },
  error: function () {
     //catch any bad data
  } 
 });
}

你的后端方法应该是这样的。对象就是你的目标

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Object GetLatest()
    {
        Object obj= new Object ();

        obj.FirstName = "Dave";
        obj.LastName = "Ward";

 return obj;
}

如果您正在进行验证,我会建议jquery / javascript。虽然,你冒着某人不允许在他们的网络浏览器上使用javascript的风险,但你可以卸载服务器端的工作。