2011-12-03 39 views
1

我正在使用此函数在按键上调用textchanged函数,问题是 它调用email.textchanged函数,但即使我命名像$($('#abcd')[0]).keypress(function()那样调用了相同的函数我所有的更新面板一起更新javascript错误

请建议一些

<script type="text/javascript"> 
       var hTimeOut = null;`enter code here` 
       $($('#email')[0]).keypress(function() { 
        if (hTimeOut) 
         clearTimeout(hTimeOut); 
        hTimeOut = setTimeout(function() { $($("#email")[0]).change(); }, 200); 

我的aspx代码是这样 *

<td> 

     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 


<ContentTemplate> 



    <asp:TextBox ID="email1" runat="server" Height="52px" Width="200px" AutoCompleteType="Email" 
     AutoPostBack="true" onfocus="this.value=this.value" class="email" 

      style="border-width:0; outline:none; border-style:none; border:none; vertical-align:middle" 
     BackColor="Transparent" BorderColor="Transparent" BorderStyle="None" 
     CssClass="stext" MaxLength="100" ></asp:TextBox> 



    <asp:panel ID="p1" runat="server" > 
     <div ID="UserAvailability" runat="server" > 
      <asp:Image ID="Image1" ImageUrl="images/spinner.gif" runat="server" /> 
     </div> 
    </asp:panel> 
      <ajaxToolkit:BalloonPopupExtender ID="PopupControlExtender2" 
     runat="server" TargetControlID="email1" 
     BalloonPopupControlID="P1" Position="TopRight" BalloonStyle="Cloud" 
     BalloonSize="small"  UseShadow="false" DisplayOnClick="true" 
     DisplayOnFocus="true" CacheDynamicResults="True" 
     /> 


     <ajaxToolkit:TextBoxWatermarkExtender ID="wm1" runat="server" 
TargetControlID="email1" 
WatermarkText="Email" 
WatermarkCssClass="stext" /> 

</ContentTemplate> 

      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="email1" EventName="TextChanged" /> 
      </Triggers> 

</asp:UpdatePanel> 


    </td> 

    <td> <asp:UpdatePanel ID="UpdatePanssel2" runat="server" UpdateMode="Conditional"> 



<ContentTemplate> 




    <asp:TextBox ID="username" runat="server" Height="52px" Width="200px" style="border-width:0; outline:none; border-style:none; border:none; vertical-align:middle"    BackColor="Transparent" BorderColor="Transparent" BorderStyle="None" AutoPostBack="true"   CssClass="stext"></asp:TextBox> 

     <ajaxToolkit:TextBoxWatermarkExtender ID="wm2" runat="server" 
TargetControlID="username" 
WatermarkText="Username" 
WatermarkCssClass="stext" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="username" EventName="TextChanged" /> 
     </Triggers> 
     </asp:UpdatePanel> 

    </td> 
<td> 
    <asp:ImageButton ID="ImageButton1" ImageUrl="images/su.gif" runat="server" /> 
    </td> 
</tr> 
</table>* 

       } 
      ); 

</script> 
+1

这个问题没有意义,你能重新吗?顺便说一下,你为什么要做'$($(“#email”)[0])'?这是毫无意义的,你选择ID为“电子邮件”('$('#电子邮件')')的元素,提取DOM元素('[O]'),并重新制作一个jQuery对象... –

+0

我的文本框有水印扩展器和baloonpopup扩展器,所以我不知道是否真的导致这个客户端这两个扩展器也具有类似的功能,如onfocus –

+0

迪迪埃湾很好actully我不知道到底为什么我使用这个脚本,但只有这一个是工作调用textpress函数的关键事件我发现它在一个stackoverflow的答案 –

回答

0

看起来好像你想在闲置200毫秒之后在keydown上的文本框中引发回发。如果这是正确的,那么你可以使用下面的脚本:

<script type="text/javascript"> 
    var hTimeOut = null; 

    $(function() { 
     $("#<%= email.ClientID %>").live("keypress", function() { 
      clearTimeout(hTimeOut); 
      var textBox = this; 
      hTimeOut = setTimeout(function() { 
       $(textBox).change(); 
      }, 200); 
     }); 
    }); 
</script> 
+0

Yuriy Rozhovetskiy你是对的,但你的脚本不工作它不会触发任何回发和我的脚本触发回发,但它更新所有的更新面板多数民众赞成什么是问题是 –

+0

你知道如何使这个Java脚本精确的关键?我的意思是没有函数应该被称为箭头,标签等键 –