<?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>Денис Самарин &#187; jQuery</title>
	<atom:link href="http://www.denis-samarin.ru/category/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.denis-samarin.ru</link>
	<description>персональный сайт</description>
	<lastBuildDate>Mon, 12 Oct 2009 10:33:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Слайд шоу на jQuery</title>
		<link>http://www.denis-samarin.ru/2008/11/29/slajd-shou-na-jquery/</link>
		<comments>http://www.denis-samarin.ru/2008/11/29/slajd-shou-na-jquery/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 07:52:06 +0000</pubDate>
		<dc:creator>Денис Самарин</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.denis-samarin.ru/?p=70</guid>
		<description><![CDATA[Очень красивая реализация&#160;&#8212; здесь.
]]></description>
			<content:encoded><![CDATA[<p>Очень красивая реализация&nbsp;&mdash; <a href="http://www.gruppo4.com/%7Etobia/cross-slide.shtml">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.denis-samarin.ru/2008/11/29/slajd-shou-na-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Глюк при динамическом добавлении SELECT&#039;а в форму</title>
		<link>http://www.denis-samarin.ru/2008/06/07/glyuk-pri-dinamicheskom-dobavlenii-selecta-v-formu/</link>
		<comments>http://www.denis-samarin.ru/2008/06/07/glyuk-pri-dinamicheskom-dobavlenii-selecta-v-formu/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 07:51:26 +0000</pubDate>
		<dc:creator>Денис Самарин</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.denis-samarin.ru/?p=68</guid>
		<description><![CDATA[Обнаружил прелюбопытнейших глюк. Допустим я генерю SELECT динамически, как это показано в прошлом примере. Этот SELECT вставляется в форму, которая в свою очередь расположена в таблице. Так вот, если тэг формы  находится где-то внутри таблицы, то генерируемый налету SELECT (да и любой другой элемент формы) не попадает в форму. То есть, при субмите в [...]]]></description>
			<content:encoded><![CDATA[<p>Обнаружил прелюбопытнейших глюк. Допустим я генерю SELECT динамически, как это показано в прошлом примере. Этот SELECT вставляется в форму, которая в свою очередь расположена в таблице. Так вот, если тэг формы  находится где-то внутри таблицы, то генерируемый налету SELECT (да и любой другой элемент формы) не попадает в форму. То есть, при субмите в массив $_POST (или $_GET) не попадают данные с этого SELECT&#39;а. Удивительно!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.denis-samarin.ru/2008/06/07/glyuk-pri-dinamicheskom-dobavlenii-selecta-v-formu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Динамический SELECT</title>
		<link>http://www.denis-samarin.ru/2008/06/03/dinamicheskij-select/</link>
		<comments>http://www.denis-samarin.ru/2008/06/03/dinamicheskij-select/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 07:48:06 +0000</pubDate>
		<dc:creator>Денис Самарин</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.denis-samarin.ru/?p=66</guid>
		<description><![CDATA[Допустим, что вам необходимо сделать такую кобинацию выпадающих списков: список 1&#160;&#8212; области, список 2&#160;&#8212; города. Но так, что при выборе области из списка 1, в списке &#171;Города&#187; отображаются только города соответствующей облести. Как это сделать на jQuery?
СКРИПТЫ:

1. $(document).ready(function() {
2. $("#region").change(function(){
3.  id = $(this).attr('value');
4.  $.post("data_city.php",{id:id},AfterRegion);
5. });
6. });
7. function AfterRegion (data){
8.  $("#city").empty();
9.  $("#city").append(data);
10. [...]]]></description>
			<content:encoded><![CDATA[<p>Допустим, что вам необходимо сделать такую кобинацию выпадающих списков: список 1&nbsp;&mdash; области, список 2&nbsp;&mdash; города. Но так, что при выборе области из списка 1, в списке &laquo;Города&raquo; отображаются только города соответствующей облести. Как это сделать на jQuery?</p>
<p><span style="font-weight: bold;">СКРИПТЫ:</span></p>
<blockquote>
<pre>1. $(document).ready(function() {
2. $("#region").change(function(){
3.  id = $(this).attr('value');
4.  $.post("data_city.php",{id:id},AfterRegion);
5. });
6. });
7. function AfterRegion (data){
8.  $("#city").empty();
9.  $("#city").append(data);
10. }</pre>
</blockquote>
<p><span style="font-weight: bold;">HTML-код:</span></p>
<blockquote>
<pre>
11. &lt; div id=region&gt;
12. &lt; select&gt;
13.  &lt; option value=63&gt;Самарская область
14.  &lt; option value=77&gt;Московская область
15.  &lt; option value=23&gt;Краснодарский край
16. &lt; /select&gt;
17.  &lt; /div&gt;
18. &lt; div id=city&gt;
19. &lt; /div&gt;</pre>
</blockquote>
<p><span style="font-weight: bold;">ПОЯСНЕНИЯ:</span></p>
<p>1. DIV с выпадающим списком городов изначально вообще пуст, так как он будет заполнятся динамически после выбора значения в списке областей.</p>
<p>2. После изменения значения в списке областей (строчка 2), мы узнаем код выбранной области (строчка 3) и вызывает процедуру data_city.php (строчка 4), которой передаем это код в виде параметра. Процедура data_city.php должа в качестве результата выдавать (echo или print) SELECT с требуемыми значениями.</p>
<p>После отработки процедуры, ее результат передается в функцию AfterRegion, которая очищает DIV с городами (вначале он и так пуст, но потом старые данные нужно затирать), и вставляет в него сгенерированный фунцией data_city.php выпадающий список.</p>
<p>3. Все.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.denis-samarin.ru/2008/06/03/dinamicheskij-select/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Автозаполнение двух связанных input’ов</title>
		<link>http://www.denis-samarin.ru/2007/10/07/avtozapolnenie-dvux-svyazannyx-input%e2%80%99ov/</link>
		<comments>http://www.denis-samarin.ru/2007/10/07/avtozapolnenie-dvux-svyazannyx-input%e2%80%99ov/#comments</comments>
		<pubDate>Sun, 07 Oct 2007 07:46:07 +0000</pubDate>
		<dc:creator>Денис Самарин</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.denis-samarin.ru/?p=63</guid>
		<description><![CDATA[Дано: два поля input type=text. В первом необходимо указать клиента, а во втором выбрать домашнее животное, принадлежащее этому клиенту. Обычный  использовать нельзя, ибо клиентов много и лазить по списку совсем не хочется.
Да и не нужно, есть ведь отличный плагин Autocomplete для JQuery.
Что нужно сделать, чтобы все заработало:
Вначале создает HTML-код:

&#60;input type=text id=client taborder=1&#62;  здесь [...]]]></description>
			<content:encoded><![CDATA[<p>Дано: два поля input type=text. В первом необходимо указать клиента, а во втором выбрать домашнее животное, принадлежащее этому клиенту. Обычный  использовать нельзя, ибо клиентов много и лазить по списку совсем не хочется.<br />
Да и не нужно, есть ведь отличный плагин Autocomplete для JQuery.</p>
<p>Что нужно сделать, чтобы все заработало:</p>
<p>Вначале создает HTML-код:</p>
<blockquote>
<p><span style="font-style: italic;">&lt;</span>i<span style="font-style: italic;">nput type=text id=client taborder=1&gt;  здесь будет фамилия клиента</span><br />
<span style="font-style: italic;">&lt;</span>i<span style="font-style: italic;">nput type=hidden id=client_id name=forma[client_id]&gt; а здесь будет код клиента</span><br />
<span style="font-style: italic;">&lt;</span>i<span style="font-style: italic;">nput type=text id=pet taborder=2&gt; здесь будет кличка питомца</span><br />
<span style="font-style: italic;">&lt;</span>i<span style="font-style: italic;">nput type=hidden id=pet_id name=forma[pet_id]&gt; здесь будет код питомца</span></p>
</blockquote>
<p>Теперь определяем обработчики для поля с клиентами:</p>
<blockquote>
<p>$(document).ready (function (){<br />
$(&laquo;#client&raquo;).autocomplete (&laquo;data_clients.php&raquo;, {});<br />
}</p>
</blockquote>
<p>data_clients.php выглядит следующим образом:</p>
<blockquote>
<p>Подключение к базе опускаю, ибо и так понятно<br />
$q = strtolower ($_GET["q"]);<br />
if (!$q) return;<br />
$rows = $DB-&gt;select (&laquo;select * from clients&raquo;);<br />
foreach ($rows as $numRow=&gt;$c){<br />
$id = $rows[$numRow]['id'];<br />
$name=$rows[$numRow]['last_name'].&#39; &#39;.$rows[$numRow]['first_name'];<br />
$name = Win1251toUTF8 ($name);<br />
echo &laquo;$name|$id\n&raquo;;<br />
}<br />
?&gt;</p>
</blockquote>
<p>Обратите внимание, что полученные из базы данные нужно обязательно сконвертить в UTF8.</p>
<p>Все. После этого, набрав в поле пару букв, мы получим выпадающий список и подходящими клиентами. Чтобы в скрытое поле попадал код клиента нужно прописать еще вот что:</p>
<blockquote>
<p>$(&laquo;#client&raquo;).result (function (event, data, formatted) {<br />
var hidden = $(&laquo;#client_id&raquo;);<br />
hidden.val (data[1]);<br />
hidden.click ();<br />
});</p>
</blockquote>
<p>Первая часть работы закончилась. Вторая часть более сложная.</p>
<p>Во-первых, нам нужно передать код выбранного клиента. Для этого пишем маленькую JS-процедурку:</p>
<blockquote>
<p>function getClientId () {<br />
return document.getElementById (&#39;client_id&#39;).value;<br />
}</p>
</blockquote>
<p>Затем указываем ее в качестве параметра для автозаполнения:</p>
<blockquote>
<p>$(&laquo;#pet&raquo;).autocomplete (&laquo;data_pets.php&raquo;, {<br />
extraParams: {bar: getClientId ()<br />
}<br />
});</p>
</blockquote>
<p>PHP-скрипт data_pets.php приводит не буду, так как он почти идентичен скрипту data_clients.php. В SQL запросе пишем условие с учетом переменной $bar.</p>
<p>Вроде все. Но проблема в том, что при выборе клиента и изменении поля с кодом клиента, jQuery это изменение не замечает, так что скрипту data_pets.php передается все время один и тот же изначальный параметр. Нужно вручную указать на изменение. Именно для этого мы в обработчике «$(&laquo;#client&raquo;).» добавили строку «hidden.click ();». Теперь лишь нужно перезагрузить обработчик pet:</p>
<blockquote>
<p>$(&laquo;#client_id&raquo;).click (function (){<br />
$(&laquo;#pet&raquo;).attr (&laquo;value&raquo;,&#39;&#39;);<br />
$(&laquo;#pet_id&raquo;).attr (&laquo;value&raquo;,&#39;&#39;);<br />
$(&laquo;#pet&raquo;).unbind ().autocomplete (&laquo;data_pets.php&raquo;, {<br />
extraParams: {bar: getClientId ()}<br />
});</p>
<p>$(&laquo;#pet&raquo;).result (function (event, data, formatted) {<br />
var hidden = $(&laquo;#pet_id&raquo;);<br />
hidden.val (data[1]);<br />
hidden.click ();    }</p>
<p>);<br />
});</p>
</blockquote>
<p>Все. Теперь все работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.denis-samarin.ru/2007/10/07/avtozapolnenie-dvux-svyazannyx-input%e2%80%99ov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jEditable</title>
		<link>http://www.denis-samarin.ru/2007/09/26/jeditable/</link>
		<comments>http://www.denis-samarin.ru/2007/09/26/jeditable/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 07:39:54 +0000</pubDate>
		<dc:creator>Денис Самарин</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.denis-samarin.ru/?p=59</guid>
		<description><![CDATA[Наверняка, многие при разработке интерактивных веб-приложений, сталкивались с проблемой редактирования данных. Например, вот такая тривиальная ситуация. Имеется большая таблица данных. Необходимо предоставить пользователю удобный интерфейс для их редактирования. В идеале это должно выглядеть так: пользователь щелкнул по тексту мышкой, текст преобразовался в форму. Пользователь отредактировал данные, нажал Enter и текст обновился.
Такое решение довольно легко реализовать, [...]]]></description>
			<content:encoded><![CDATA[<p>Наверняка, многие при разработке интерактивных веб-приложений, сталкивались с проблемой редактирования данных. Например, вот такая тривиальная ситуация. Имеется большая таблица данных. Необходимо предоставить пользователю удобный интерфейс для их редактирования. В идеале это должно выглядеть так: пользователь щелкнул по тексту мышкой, текст преобразовался в форму. Пользователь отредактировал данные, нажал Enter и текст обновился.</p>
<p>Такое решение довольно легко реализовать, если использовать плагин для <a href="http://jquery.com/">jQuery</a> – <a href="http://www.appelsiini.net/projects/jeditable">jEditable</a>, который я нашел в блоге <a href="http://www.appelsiini.net/">Mike Tuupola</a>.</p>
<p>Достаточно добавить на страницу следующий JS-код:</p>
<blockquote>
<p><em>$(document).ready (function () {<br />
$(&laquo;.edit&raquo;).editable (&laquo;http://www.example.com/save.php&raquo;, {<br />
indicator : &laquo;Saving...&raquo;,<br />
tooltip   : &#39;Click to edit...&#39;<br />
});<br />
});</em><em> </em></p>
</blockquote>
<p>В результате, любой контейнер (div, td, p и т.д.), помеченный стилем «edit» станет вести себя именно так, как я описал выше.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.denis-samarin.ru/2007/09/26/jeditable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
