<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kubiczek devblog &#187; Javascript</title>
	<atom:link href="http://blog.kubiczek.eu/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kubiczek.eu</link>
	<description>I&#039;m lovin&#039; it ;)</description>
	<lastBuildDate>Thu, 19 Jan 2012 12:09:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>jQuery, validate plugin a weryfikacja numeru NIP i PESEL</title>
		<link>http://blog.kubiczek.eu/2009/12/jquery-walidacja-numeru-nip-pesel/</link>
		<comments>http://blog.kubiczek.eu/2009/12/jquery-walidacja-numeru-nip-pesel/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 01:23:54 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=289</guid>
		<description><![CDATA[Napisałem dwa dodatkowe walidatory do pluginu jquery-plugin-validation, które sprawdzają poprawność numeru NIP oraz PESEL. Najpierw metoda dodająca walidację numeru NIP: jQuery.validator.addMethod&#40;&#34;nip&#34;, function&#40;value, element&#41; &#123; var verificator_nip = new Array&#40;6,5,7,2,3,4,5,6,7&#41;; var nip = value.replace&#40;/[\ \-]/gi, ''&#41;; if &#40;nip.length != 10&#41; &#123; return false; &#125; else &#123; var n = 0; for &#40;var i=0; i&#60;9; i++&#41; &#123; [...]]]></description>
			<content:encoded><![CDATA[<p>Napisałem dwa dodatkowe walidatory do pluginu <a href="http://docs.jquery.com/Plugins/Validation">jquery-plugin-validation</a>, które sprawdzają poprawność numeru NIP oraz PESEL.</p>
<p>Najpierw metoda dodająca walidację numeru NIP:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery.<span style="color: #660066;">validator</span>.<span style="color: #660066;">addMethod</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;nip&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> verificator_nip <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">6</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">7</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #339933;">,</span><span style="color: #CC0000;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #003366; font-weight: bold;">var</span> nip <span style="color: #339933;">=</span> value.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[\ \-]/gi</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nip.<span style="color: #660066;">length</span> <span style="color: #339933;">!=</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span>  <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> n <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">9</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>	n <span style="color: #339933;">+=</span> nip<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> verificator_nip<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
n <span style="color: #339933;">%=</span> <span style="color: #CC0000;">11</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n <span style="color: #339933;">!=</span> nip<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">9</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>	
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Proszę o podanie prawidłowego numeru NIP&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Wystarczy zrobić capy&#038;paste powyższego kodu, do swojej aplikacji. A teraz PESEL:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery.<span style="color: #660066;">validator</span>.<span style="color: #660066;">addMethod</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;pesel&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> pesel <span style="color: #339933;">=</span> value.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/[\ \-]/gi</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pesel.<span style="color: #660066;">length</span> <span style="color: #339933;">!=</span> <span style="color: #CC0000;">11</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> steps <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">9</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">9</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #003366; font-weight: bold;">var</span> sum_nb <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> x <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> x <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> sum_nb <span style="color: #339933;">+=</span> steps<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> pesel<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
sum_m <span style="color: #339933;">=</span> <span style="color: #CC0000;">10</span> <span style="color: #339933;">-</span> sum_nb <span style="color: #339933;">%</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>sum_m <span style="color: #339933;">==</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> sum_c <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span> sum_c <span style="color: #339933;">=</span> sum_m<span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>sum_c <span style="color: #339933;">!=</span> pesel<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>	
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Proszę o podanie prawidłowego numeru PESEL&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><s>Tak się zastanawiam, gdzie do diaska się podział plugin odpowiedzialny za kolorowanie składni? :)</s> (odnalazł już się)</p>
<p>Proszę jednak mieć na uwadze, że żyją w Polsce ludzie posiadający nieprawidłowy, z punktu widzenia algorytmu, numer PESEL. Taki urok naszej administracji :) Dlatego warto błąd weryfikacji tego numeru, stosować do ostrzeżenia użytkownika, ale niekoniecznie do całkowitego zablokowania akcji.</p>
<p>I jeszcze przykład wykorzystania walidatora:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#orderform&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">validate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    rules<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
       field_nip<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
           nip<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
               depends<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;#field_nip:filled&quot;</span>
           <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>			    
           required<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;#field_companyname:filled&quot;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Powyższy przykład dokona walidacji formularza #orderform, i sprawdzi numer NIP wg następujących reguł:</p>
<p>1) Pole z numerem NIP (field_nip) musi być wypełnione w przypadku gdy podana zostanie nazwa firmy (field_companyname)</p>
<p>2) Jeżeli zostanie podany numer NIP, to sprawdź jego poprawność</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2009/12/jquery-walidacja-numeru-nip-pesel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DateTimePicker komponent</title>
		<link>http://blog.kubiczek.eu/2008/09/datetimepicker-komponent/</link>
		<comments>http://blog.kubiczek.eu/2008/09/datetimepicker-komponent/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 16:11:05 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Gotowe skrypty i programy]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://kubiczek.net.pl/?p=80</guid>
		<description><![CDATA[Takie coś kiedyś napisałem (hen dawno temu), a teraz na powrót to odkryłem: (aby zobaczyć prawidłowo funkcjonujące demo otwórz skrypt w nowym oknie) Jest to prosty skrypt wyświetlający kalendarzyk, i wstawiający wybraną przez użytkownika datę do pola tekstowego. Wywołanie skryptu jest banalne: &#60;input id=&#34;DateShow&#34; style=&#34;width: 80px;&#34; maxlength=&#34;10&#34; name=&#34;DateShow&#34; type=&#34;text&#34; /&#62; &#60;img style=&#34;cursor:pointer;&#34; onclick=&#34;DateTimePicker.Show(this,'DateShow');&#34; src=&#34;calendar.gif&#34; alt=&#34;&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Takie coś kiedyś napisałem (hen dawno temu), a teraz na powrót to odkryłem:</p>
<p>
<style type="text/css">
table.ems-date-picker { font-family:verdana; font-size:7pt; background-color:rgb(234,229,206); border:1px solid black; }

table.ems-date-picker td.month { text-align:center; font-weight:bold; color: black; width:60px; }

table.ems-date-picker td.year { text-align:center; font-weight:bold; color: black; width:40px; }

/* Current day */ table.ems-date-picker td.today { text-align:center; font-weight:bold; color: black; padding:2px; cursor:pointer; }

table.ems-date-picker td.today_h { text-align:center; font-weight:bold; color:white; padding:2px; background-color:blue; cursor:pointer; }

/* Current month's days */ table.ems-date-picker td.currentmonth { text-align:center; color: black; padding:2px; cursor:pointer; }

table.ems-date-picker td.currentmonth_h { text-align:center; color: white; background-color:blue; padding:2px; cursor:pointer; }

/* Previous or next month's days */ table.ems-date-picker td.nextprevmonth { text-align:center; color: #555555; padding:2px; cursor:pointer; }

table.ems-date-picker td.nextprevmonth_h { text-align:center; color: black; padding:2px; cursor:pointer; }

/* Weekdays' names */ table.ems-date-picker th.weekday { background-color:rgb(161,60,60); color:white; padding:2px; padding-left:5px; padding-right:5px; }

input.ems-date-picker-button { font-family:helvetica; font-size:8pt; font-weight:bold; border:none; background-color:rgb(234,229,206); }  
</style>
</p>
<p><script lang="javascript" src="/files/datetimepicker/datetimepicker.js" type="text/javascript"></script></p>
<input id="DateShow" style="width: 80px;" maxlength="10" name="DateShow" type="text" /> <img style="cursor:pointer;" onclick="DateTimePicker.Show(this,'DateShow');" src="/files/datetimepicker/calendar.gif" alt="" /></p>
<p>(aby zobaczyć prawidłowo funkcjonujące demo <a href="files/datetimepicker/datetimepicker.html" target="_blank">otwórz skrypt w nowym oknie</a>)</p>
<p>Jest to prosty skrypt wyświetlający kalendarzyk, i wstawiający wybraną przez użytkownika datę do pola tekstowego. Wywołanie skryptu jest banalne:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;input id=&quot;DateShow&quot; style=&quot;width: 80px;&quot; maxlength=&quot;10&quot; name=&quot;DateShow&quot; type=&quot;text&quot; /&gt;
&lt;img style=&quot;cursor:pointer;&quot; onclick=&quot;DateTimePicker.Show(this,'DateShow');&quot; src=&quot;calendar.gif&quot; alt=&quot;&quot; /&gt;</pre></div></div>

<p>W drugim parametrze przekazujemy id pola tekstowego, do którego chcemy wstawić wybraną przez użytkownika datę. Paczuszkę ze skryptem, stylami i przykładowym użyciem można <a href="/files/datetimepicker/datetimepicker.zip">pobrać tutaj</a>. Jak zajrzycie do kodu źródłowego, to odkryjecie wiele dodatkowych możliwości (ok, zdradzę trochę: można zmienić język w jakim kalendarz jest wyświetlany, albo format zwracanej daty).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2008/09/datetimepicker-komponent/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scroller, pokazywacz komunikatów, reklam itp.</title>
		<link>http://blog.kubiczek.eu/2008/08/scroller-pokazywacz-komunikatow-reklam-itp/</link>
		<comments>http://blog.kubiczek.eu/2008/08/scroller-pokazywacz-komunikatow-reklam-itp/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 22:23:15 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Gotowe skrypty i programy]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://kubiczek.net.pl/?p=40</guid>
		<description><![CDATA[Pod tym wybitnym tytułem, kryje się obiekt w Javascript, który powstał pewnego dnia w przerwie pomiędzy pierwszą kanapką a drugą ;). W każdym razie umożliwia on łatwo osiągnięcie takiego efektu jak widać to poniżej. A oto kod obiektu: function Scroller&#40;divID,stringsArray&#41; &#123; &#160; var pause=3000; &#160; var currentIndex=0; var mainDiv=document.getElementById&#40;divID&#41;; var innerDiv=document.createElement&#40;'div'&#41;; mainDiv.style.overflow='hidden'; &#160; mainDiv.appendChild&#40;innerDiv&#41;; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Pod tym wybitnym tytułem, kryje się obiekt w Javascript, który powstał pewnego dnia w przerwie pomiędzy pierwszą kanapką a drugą ;). W każdym razie umożliwia on łatwo osiągnięcie takiego efektu jak widać to poniżej.</p>
<p>A oto kod obiektu:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> Scroller<span style="color: #009900;">&#40;</span>divID<span style="color: #339933;">,</span>stringsArray<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> pause<span style="color: #339933;">=</span><span style="color: #CC0000;">3000</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> currentIndex<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> mainDiv<span style="color: #339933;">=</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>divID<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> innerDiv<span style="color: #339933;">=</span>document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	mainDiv.<span style="color: #660066;">style</span>.<span style="color: #660066;">overflow</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'hidden'</span><span style="color: #339933;">;</span>
&nbsp;
	mainDiv.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>innerDiv<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> marginTop<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> stepDelta<span style="color: #339933;">=</span><span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> initScrolling <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		marginTop<span style="color: #339933;">=</span>mainDiv.<span style="color: #660066;">offsetHeight</span><span style="color: #339933;">;</span>
		innerDiv.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">=</span>stringsArray<span style="color: #009900;">&#91;</span>currentIndex<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		innerDiv.<span style="color: #660066;">style</span>.<span style="color: #660066;">marginTop</span><span style="color: #339933;">=</span>marginTop<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> CountDelta <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> newDelta<span style="color: #339933;">=</span>Math.<span style="color: #660066;">sin</span><span style="color: #009900;">&#40;</span>marginTop<span style="color: #339933;">/</span>mainDiv.<span style="color: #660066;">offsetHeight</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #CC0000;">10</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>newDelta<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span><span style="color: #CC0000;">0.01</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> newDelta<span style="color: #339933;">=</span><span style="color: #CC0000;">0.01</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>	
		<span style="color: #000066; font-weight: bold;">return</span> newDelta<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> SetPosition <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		stepDelta<span style="color: #339933;">=</span>CountDelta<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>marginTop<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			marginTop<span style="color: #339933;">-=</span>stepDelta<span style="color: #339933;">;</span>			
			innerDiv.<span style="color: #660066;">style</span>.<span style="color: #660066;">marginTop</span><span style="color: #339933;">=</span>marginTop<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> marginTop<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> nextString <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>currentIndex<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>stringsArray.<span style="color: #660066;">length</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			currentIndex<span style="color: #339933;">++;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			currentIndex<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		startScrolling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> startScrolling <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		initScrolling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> stepInterval <span style="color: #339933;">=</span> window.<span style="color: #660066;">setInterval</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>SetPosition<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				clearInterval<span style="color: #009900;">&#40;</span>stepInterval<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				setTimeout<span style="color: #009900;">&#40;</span>nextString<span style="color: #339933;">,</span>pause<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> 
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	startScrolling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A tutaj przykład użycia:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;html&gt;
&lt;head&gt;
&lt;script src=&quot;scroller.js&quot; type=&quot;text/javascript&quot; language=&quot;javascript&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&nbsp;
&lt;div id=&quot;scroller&quot; style=&quot;width:300px;height:70px;padding:5px;background-color:orange;font-size:8pt;font-family:verdana;&quot;&gt;&lt;/div&gt;
&nbsp;
&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&gt;
//&lt;![CDATA[
&nbsp;
var Strings=new Array();
Strings[0]='Hi! Jestem mrówka!';
Strings[1]='Lorem ipsum dolor sit amet consectetuer turpis lacinia Curabitur vel a. Massa morbi Donec est in leo consequat vestibulum lobortis enim.';
Strings[2]='Lákamí vůněhulás úmyval rohlivý jednovod lek vlač Partavěď ka vla.';
Strings[3]='Massa morbi Donec est in leo consequat vest. Massa morbi Donec est in leo consequat vest, massa morbi Donec est in leo consequat vest.';
&nbsp;
var scroller=new Scroller('scroller',Strings);
//]]&gt;
&lt;/script&gt;
&nbsp;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>W pierwszym parametrze konstruktora przekazujemy ID warstwy na której chcemy wyświetlać komunikaty, w drugim natomiast tablicę z komunikatami. Voila.</p>
<p>Przetestowane pod Firefox2, IE7, Opera9.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2008/08/scroller-pokazywacz-komunikatow-reklam-itp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obsługa klawiszy shift i ctrl w javascript.. na żywym przykładzie :)</title>
		<link>http://blog.kubiczek.eu/2008/08/obsluga-klawiszy-shift-i-ctrl-w-javascript-na-zywym-przykladzie/</link>
		<comments>http://blog.kubiczek.eu/2008/08/obsluga-klawiszy-shift-i-ctrl-w-javascript-na-zywym-przykladzie/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 22:03:37 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://kubiczek.net.pl/?p=13</guid>
		<description><![CDATA[Pewną bolączką webowych interfejsów użytkownika, jest brak niektórych możliwości jakie można na co dzień spotkać w interfejsach systemów operacyjnych. Jednym z takich brakujących elementów, jest możliwość wybierania myszką wielu pozycji z listy, wspomagając się klawiszami SHIFT i CTRL. Pora więc nadrobić braki i wykonać mechanizm implementujący taką funkcję na stronie WWW. Jak się okaże, nie [...]]]></description>
			<content:encoded><![CDATA[<p>Pewną bolączką webowych interfejsów użytkownika, jest brak niektórych możliwości jakie można na co dzień spotkać w interfejsach systemów operacyjnych. Jednym z takich brakujących elementów, jest możliwość wybierania myszką wielu pozycji z listy, wspomagając się klawiszami SHIFT i CTRL. Pora więc nadrobić braki i wykonać mechanizm implementujący taką funkcję na stronie WWW. Jak się okaże, nie jest to nic trudnego.</p>
<p>Zacznijmy od utworzenia kodu HTML naszej listy wyboru. Kolejne elementy listy będą umieszczone na oddzielnych warstwach, chociaż nic nie stoi na przeszkodzie aby były to inne elementy, na przykład wiersze tabeli lub wypunktowania. Wszystkie elementy zgrupujemy na warstwie głównej, co ułatwi nam automatyczne przypisywanie do nich zdarzeń. Nasz kod może wyglądać w ten sposób:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;ListaDiv&quot;&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt; Opcja nr 1&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt; Opcja nr 2&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt; Opcja nr 3&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt; Opcja nr 4&lt;/div&gt;
&lt;/div&gt;</pre></div></div>

<p>Następnie, poszczególnym Divom odpowiadającym kolejnym elementom naszej listy powinniśmy przypisać zdarzenie onclick tak aby reagowały na kliknięcie na nich myszką. Napiszemy więc funkcję przypisz(), która pobierze wszystkie Divy należące do listy i w pętli przypisze im handler zdarzenia onclick:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> ListKontenerID<span style="color: #339933;">=</span><span style="color: #3366CC;">'ListaDiv'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> przypisz<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003366; font-weight: bold;">var</span> x<span style="color: #339933;">=</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>ListKontenerID<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>ltx.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  x<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">onclick</span> <span style="color: #339933;">=</span> klik<span style="color: #339933;">;</span>
  x<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numer'</span><span style="color: #339933;">,</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Tutaj należą się dwa słowa wyjaśnienia. Zdarzenia dodajemy poprzez przypisanie elementowi nazwy funkcji, która obsłuży nasze kliknięcia. Zgodnie z specyfikacją DOM Level 2 powinniśmy to robić za pomocą metody addEventListener(), jednakże jak na razie ani Opera ani MSIE nie obsługują tego modelu zdarzeń.</p>
<p>Dodatkowo, w pętli numerujemy sobie poszczególne warstwy, tak abyśmy później szybko mogli stwierdzić, który w kolejności element listy został kliknięty. Numerację wykonujemy poprzez dodanie do Diva nowego atrybutu o nazwie &#8220;numer&#8221;.</p>
<p>Funkcję przypisz() powinniśmy wywoływać po załadowaniu strony, np. w zdarzeniu onload:</p>
<p>Zanim przejdziemy do właściwej obsługi zdarzenia onclick, utwórzmy jeszcze dwie funkcje pomocnicze, które będą nam zaznaczać i odznaczać wskazany element listy:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> zaznacz<span style="color: #009900;">&#40;</span>obiekt<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 obiekt.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 obiekt.<span style="color: #660066;">className</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'podswietlony'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> odznacz<span style="color: #009900;">&#40;</span>obiekt<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 obiekt.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 obiekt.<span style="color: #660066;">className</span><span style="color: #339933;">=</span><span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>W tych funkcjach można zaimplementować dowolnie skomplikowane akcje; istotne jest aby pozostawić jedynie ustawianie i gaszenie atrybutu &#8220;wybrany&#8221;, który będzie wykorzystywany podczas obsługi zdarzeń. W przykładzie powyżej, wykonujemy dodatkowo jedynie ustawianie stylu &#8220;podswietlony&#8221; do wybranego elementu.</p>
<p>Po przygotowaniu terenu działań możemy przystąpić do implementacji najważniejszej funkcji przechwytującej zdarzenia. Jak się okazuje, sprawdzenie czy był wciśnięty klawisz shift lub ctrl jest banalnie proste: obiekt zdarzenia przechowuje właściwości o nazwie shiftKey oraz ctrlKey. Wystarczy więc sprawdzić jej stan podczas kliknięcia myszką i zależnie od wyniku podjąć odpowiednią akcję:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> klik<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>e <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		e<span style="color: #339933;">=</span>event<span style="color: #339933;">;</span>
		e.<span style="color: #660066;">target</span><span style="color: #339933;">=</span>event.<span style="color: #660066;">srcElement</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">shiftKey</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> PoprzedniNumer<span style="color: #339933;">!=</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> n1<span style="color: #339933;">=</span>e.<span style="color: #660066;">target</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numer'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> n2<span style="color: #339933;">=</span>PoprzedniNumer<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n1<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span>n2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #003366; font-weight: bold;">var</span> tmp<span style="color: #339933;">=</span>n2<span style="color: #339933;">;</span> n2<span style="color: #339933;">=</span>n1<span style="color: #339933;">;</span> n1<span style="color: #339933;">=</span>tmp<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
		x<span style="color: #339933;">=</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>ListKontenerID<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span>n1<span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span>n2<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			zaznacz<span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">ctrlKey</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			zaznacz<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			odznacz<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>		
&nbsp;
	<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		x<span style="color: #339933;">=</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>ListKontenerID<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>x.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			odznacz<span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'wybrany'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			zaznacz<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			odznacz<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	PoprzedniNumer<span style="color: #339933;">=</span>e.<span style="color: #660066;">target</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numer'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Działające demo można zobaczyć tutaj: detekcja klawiszy specjalnych w javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2008/08/obsluga-klawiszy-shift-i-ctrl-w-javascript-na-zywym-przykladzie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

