<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gregory Rubinstein : utility functions</title><link>http://weblogs.asp.net/grblog/archive/tags/utility+functions/default.aspx</link><description>Tags: utility functions</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Remaining Characters Counter</title><link>http://weblogs.asp.net/grblog/archive/2008/04/10/remaining-characters-counter.aspx</link><pubDate>Fri, 11 Apr 2008 02:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6085156</guid><dc:creator>grigorythegreat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/grblog/rsscomments.aspx?PostID=6085156</wfw:commentRss><comments>http://weblogs.asp.net/grblog/archive/2008/04/10/remaining-characters-counter.aspx#comments</comments><description>&lt;p style="font-size: 9pt; font-family: arial;"&gt;Recently I was
developing a webform (asp.net) where the user could submit his
feedback, and one of the requirements was that the user should not
enter more than a set number of characters in his message, so I thought
it would be real nice for the end user to know how many more characters
he still can type until the maximum limit is reached.&lt;br&gt;&lt;br&gt;In order
to allow that functionality, I created a asp.net multiline textbox for
text input and an html readonly text field (for displaying number of
characters until the maximum).&lt;br&gt;&lt;br&gt;Then, I created a Javascript
function and called it every time the contents of the multiline textbox
changed (onKeyUp and onChange events).&lt;br&gt;&lt;br&gt;Below is the code:&lt;br&gt;&lt;br&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;/p&gt;function CountChars(text,long)&lt;br&gt;&lt;pre&gt;{&lt;br&gt;   var maxlength = new Number(long);&lt;br&gt;   var myLength = text.value.length;&lt;br&gt;   document.forms[0].Counter.value = maxlength - myLength;&lt;br&gt;   if (myLength &amp;gt; maxlength) {&lt;br&gt;      text.value = text.value.substring(0,maxlength);&lt;br&gt;   }&lt;br&gt;}&lt;br&gt;&lt;/pre&gt;&amp;lt;/script&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&lt;br&gt;  &amp;lt;form id="Form1" runat="server"&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;asp:Textbox mode="multiline" id="txtMessage" runat="server" /&amp;gt;&amp;lt;br /&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;input type="text" name="Counter" readonly="readonly" /&amp;gt;&lt;br&gt;&lt;br&gt;  &amp;lt;/form&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;br&gt;&lt;br&gt;&lt;font color="#000099"&gt;        Protected Sub&lt;/font&gt; Page_Load(&lt;font color="#000099"&gt;ByVal&lt;/font&gt; sender &lt;font color="#000099"&gt;As&lt;/font&gt; Object, &lt;font color="#000099"&gt;ByVal&lt;/font&gt; e &lt;font color="#000099"&gt;As&lt;/font&gt; System.EventArgs) Handles &lt;font color="#000099"&gt;Me&lt;/font&gt;.Load&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Util.SetTextBoxProperties(txtMessage, &lt;font color="#000099"&gt;True&lt;/font&gt;)&lt;br&gt;&lt;font color="#000099"&gt;        End Sub&lt;/font&gt;&lt;br&gt;&lt;br&gt;Below is the SetTextBoxProperties method, which actually did the work:&lt;br&gt;&lt;br&gt;&lt;font color="#000099"&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;Public Sub&lt;/span&gt;&lt;/font&gt; SetTextBoxProperties(&lt;font color="#000099"&gt;ByVal&lt;/font&gt; txt &lt;font color="#000099"&gt;As&lt;/font&gt; TextBox)&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#000000"&gt;txt.Attributes.Add(&lt;/font&gt;&lt;font color="#660000"&gt;"onKeyUp"&lt;/font&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;font color="#660000"&gt;"CountChars(this,"&lt;/font&gt; &lt;font color="#000000"&gt;&amp;amp; txt.MaxLength &amp;amp;&lt;/font&gt; &lt;font color="#660000"&gt;")"&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#000000"&gt;txt.Attributes.Add(&lt;/font&gt;&lt;font color="#660000"&gt;"onChange"&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt; &lt;font color="#660000"&gt;"CountChars(this,"&lt;/font&gt; &lt;font color="#000000"&gt;&amp;amp; txt.MaxLength &amp;amp;&lt;/font&gt; &lt;font color="#660000"&gt;")"&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;br&gt;&lt;font color="#000099"&gt;        End Sub&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6085156" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/grblog/archive/tags/useful+functions/default.aspx">useful functions</category><category domain="http://weblogs.asp.net/grblog/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://weblogs.asp.net/grblog/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://weblogs.asp.net/grblog/archive/tags/utility+functions/default.aspx">utility functions</category><category domain="http://weblogs.asp.net/grblog/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Active Control Marker</title><link>http://weblogs.asp.net/grblog/archive/2008/04/10/active-control-marker.aspx</link><pubDate>Thu, 10 Apr 2008 04:07:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6081124</guid><dc:creator>grigorythegreat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/grblog/rsscomments.aspx?PostID=6081124</wfw:commentRss><comments>http://weblogs.asp.net/grblog/archive/2008/04/10/active-control-marker.aspx#comments</comments><description>&lt;p&gt;Today, while working on my project, I recalled that some of the data entry pages in my project have a lot of textboxes, which may confuse the end-user once he starts entering information. My idea was to make the textbox that has focus visually different from the rest, so I came up with the following code snippet, that does the actual work:&lt;/p&gt;

&lt;p&gt;&lt;span style="color: blue;"&gt;Public Sub&lt;/span&gt; ShowActiveTextbox(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; txt &lt;span style="color: blue;"&gt;As&lt;/span&gt; TextBox)&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt.Attributes.Add(&lt;span style="color: brown;"&gt;"onfocus", "this.className='class1'"&lt;/span&gt;) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt.Attributes.Add(&lt;span style="color: brown;"&gt;"onblur", "this.className='class2'"&lt;/span&gt;) &lt;/p&gt;

&lt;p&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;This code would work just fine if I had only one or two Textboxes on my page. However, some of the pages may contain a dozen of those textboxes, so I came up with another useful method:&lt;/p&gt;

&lt;p&gt;&lt;span style="color: blue;"&gt;Public Sub&lt;/span&gt; ShowActiveTextbox(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; col &lt;span style="color: blue;"&gt;As&lt;/span&gt; ControlCollection)&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;For Each&lt;/span&gt; Ctl &lt;span style="color: blue;"&gt;As&lt;/span&gt; Control &lt;span style="color: blue;"&gt;In&lt;/span&gt; col&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &lt;span style="color: blue;"&gt;If&lt;/span&gt; Ctl.GetType().Name = &lt;span style="color: brown;"&gt;"Textbox"&lt;/span&gt; &lt;font color="#0000cc"&gt;Then&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;span style="color: blue;"&gt;Call&lt;/span&gt; ShowActiveTextbox(Ctl)&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &lt;font color="#006633"&gt;'Handle TextBoxes contained in container controls, such as panel&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If&lt;/font&gt; ctl.Controls.Count &amp;gt; 0 &lt;font color="#0000cc"&gt;Then&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Call&lt;/span&gt; ShowActiveTextBox(ctl.Controls)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000cc"&gt;End If&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &lt;span style="color: blue;"&gt;End If&lt;/span&gt;&lt;/p&gt;

&lt;span style="color: blue;"&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br&gt;&amp;nbsp;End Sub&lt;/p&gt;
&lt;/span&gt;

&lt;p&gt;&amp;nbsp;Now we have a method that will handle any number of controls on a specific page and will apply the onFocus and onBlur event handlers to all Textboxes on that page.&lt;br&gt;
&lt;/p&gt;

&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6081124" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/grblog/archive/tags/useful+functions/default.aspx">useful functions</category><category domain="http://weblogs.asp.net/grblog/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://weblogs.asp.net/grblog/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://weblogs.asp.net/grblog/archive/tags/utility+functions/default.aspx">utility functions</category></item></channel></rss>