Solved

TextChanged event not working

Posted on 2004-08-27
7
3,291 Views
Last Modified: 2008-01-09
I want to check the length of letters in the textbox. If the length equals 7 then I want to shift the focus to the next textbox control.

I have added the following in the textboxchanged event

Private Sub txtSaleItem_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtSaleItem.TextChanged
        If Len(txtSaleItem.Text) = 7 Then
            Call SetFocus.set_focus(Me, txtSaleQty)
        End If
End Sub

Public Class SetFocus
    Public Shared Sub set_focus(ByRef p_page As System.Web.UI.Page, ByVal p_control As System.Web.UI.Control)
        Dim w_str As String
        If Not (p_control Is Nothing) Then
            w_str = "<script language=JavaScript>document.forms(0).elements['" & p_control.ClientID().ToString() & "'].focus();</script>"
            p_page.Controls.Add(New System.Web.UI.LiteralControl(w_str))
        End If
    End Sub
End Class



I have set the textbox Autopostback property to TRUE.

The event is firing when the textbox loses focus but I want it to fire as the the user enters the letters and check for the length of text in the textbox.

Help would be appreciated.
Thanks
0
Comment
Question by:wilkersons
  • 4
  • 3
7 Comments
 
LVL 6

Expert Comment

by:dgelinas
ID: 11913304
Sounds to me like you would only be able to do that using Javascript.

In javascript you can write a function that will check the length of the field value from the onkeyup property of the field.  Test the below working code.

<html>
<head>
</head>

<body>
<script>
  function check(field) {
    if(field.value.length==7){
        document.forms[0].field2.focus();
      }
  }
</script>

<form id="form1">
<input name="field1" type="text" onkeyup="check(this)">
<br>
<br>
<input name="field2" type="text">
<br>
<br>
</form>

</body>
</html>
0
 

Author Comment

by:wilkersons
ID: 11913558
Well, I am user the textbox server control and it does not have keyup or keydown events...so where should I use the

check(this)  function??

0
 
LVL 6

Expert Comment

by:dgelinas
ID: 11913962
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<script>
  function check(field) {
    if(field.value.length==7){
        document.forms[0].field2.focus();
      }
  }
</script>
<form runat="server">
<asp:Textbox id="field1" runat="server" OnKeyUp="check(this)"></asp:Textbox>
<asp:Textbox id="field2" runat="server"></asp:Textbox>
</form>

</body>
</html>
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 

Author Comment

by:wilkersons
ID: 11914142
<asp:Textbox id="txtSaleItem" runat="server" OnKeyUp="check(this)"></asp:Textbox>

Gives me an error at OnKeyUp (This is not an attribute for the element)

I tried the following:

 txtSaleItem.Attributes.Add("onKeyUp", "Javascript:document.forms[0].item[txtSaleQty].focus();")

I need to move the focus to
<asp:Textbox id="txtSaleQty" runat="server" ></asp:Textbox>

I get an error as soon as I type the first letter in the txtSaleItem. This means that the onKeyUp does fire but I guess there is some syntax error at the javascript statement

The error is:
document.forms[0].item[....] is null or not an object

Can you suggest something??
Thanks
0
 
LVL 6

Accepted Solution

by:
dgelinas earned 500 total points
ID: 11914182
try this

txtSaleItem.Attributes.Add("onKeyUp", "Javascript:document.forms[0].txtSaleQty.focus();")
0
 

Author Comment

by:wilkersons
ID: 11914915

I tried
txtSaleItem.Attributes.Add("onKeyUp", "Javascript:if (document.forms[0].txtSaleItem.value.length==7){document.forms[0].txtSaleQty.focus();}")


and it is working !!!

Thanks for your help
0
 
LVL 6

Expert Comment

by:dgelinas
ID: 11914919
No problem :)
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
This article discusses the ASP.NET AJAX ModalPopupExtender control. In this article we will show how to use the ModalPopupExtender control, how to display/show/call the ASP.NET AJAX ModalPopupExtender control from javascript, how to show/display/cal…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question