允许在按下键后输入文本框

Allowing to type in textbox after postback on keydown

本文关键字:输入 文本      更新时间:2023-09-26

我试图创建一个文本框,在keydown上执行c#函数,所以我订购了一个javascript函数来回发文本框的keydown事件,基本上,发生的事情是我在autopostback=true上的文本框和c#函数只有在点击框外时执行,因为autopostback,所以我想达到同样的目标,但没有点击外部,只有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
}

的问题是,这段代码在按下键时刷新整个页面,用户无法键入。的帮助!: P

谢谢

您的解决方案的问题在于,当您引起回复时,您实际上是在重新启动生命周期。这意味着你的数据也没有得到正确的保存。我建议使用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的风险,但你可以在服务器端卸载工作。