<?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; javascript / ajax</title>
	<atom:link href="http://blog.copperred.net/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.copperred.net</link>
	<description>стараемся "по циркулю" и "западлицо"</description>
	<lastBuildDate>Thu, 27 Oct 2011 14:23:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Скажи &#8220;нет!&#8221; велосипедам</title>
		<link>http://blog.copperred.net/2008/09/say_no_to_bicycle-2/</link>
		<comments>http://blog.copperred.net/2008/09/say_no_to_bicycle-2/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 08:53:30 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[javascript / ajax]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[scriptaculous]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[webdev / software engineering]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/?p=142</guid>
		<description><![CDATA[Когда-то давно, я написал функцию, которая проверяла все ли input radio button-ы натырканы в отсылаемой форме. Эта валидация была нужна мне для использования формы в небольшом опроснике, который я делал на старой работе. Ну и понятное дело, что решение было далеко от оптимального и очень прямолинейное. Сейчас, работая проектировщиком информационной системы, я борюсь с подобными [...]]]></description>
			<content:encoded><![CDATA[<p>Когда-то давно, я написал функцию, которая проверяла все ли input radio button-ы натырканы в отсылаемой форме. Эта валидация была нужна мне для использования формы в небольшом опроснике, который я делал на старой работе. Ну и понятное дело, что решение было далеко от оптимального и очень прямолинейное. Сейчас, работая проектировщиком информационной системы, я борюсь с подобными решениями в рядах своих программистов, приучая их пользоваться готовым кодом там, где это возможно. </p>
<p>Учитывая, что тот самый, велосипедный пост, до сих пор входит в двадцатку самых посещаемых страниц моего блога, я решил исправиться и показать, как бы я решал данный вопрос теперь. </p>
<p><span id="more-142"></span></p>
<p>Во-первых, я бы сразу взял какой-нибудь из JavaScript framework. Решений много, они отличаются по скорости и нужно смотреть в зависимости от проекта - что уже используется. В текущем проекте мы используем <a href="http://www.prototypejs.org/">prototype</a> и <a href="http://script.aculo.us/">scriptaculous</a>, по той причине, что при помощи JS мы в основном организуем взаимодействие администратора и backend-a, а администратор у нас использует Firefox 3, где Prototype быстрее <a href="http://jquery.com/">jQuery</a>. К тому же, мне prototype нравиться еще и потому, что он входит в состав Ruby on Rails, а значит работать с ним в этом фреймворке легко и непринужденно.</p>
<p>Во-вторых, и jQuery и Prototype обладают возможностью легкого расширения за счет плагинов. Ну и понятно, что для обоих уже существуют многофункциональные плагины для работы с формами. То есть, окончательное решение для примера было бы следующим:</p>
<pre><code class="html">
&lt;!-- Подключаем нужные библиотеки -->
&lt;script src="scriptaculous/lib/prototype.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script src="scriptaculous/src/effects.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="validation.js"&gt;
&lt;/script&gt;
...
&lt;form id="test" action="#" method="get"&gt;
&lt;!-- Cоздаем поля, которые нужно проверять --&gt;
&lt;input type="radio" name="field6" id="field6-male" value="Male" /&gt;
Male&lt;br /&gt;
&lt;input type="radio" name="field6" id="field6-female" value="Female" class="validate-one-required" /&gt;
Female&lt;br /&gt;
&lt;input type="radio" name="field7" id="field7-single" value="Single" /&gt;
Single&lt;br /&gt;
&lt;input type="radio" name="field7" id="field7-married" value="Married" class="validate-one-required" /&gt;
Married&lt;br /&gt;
&lt;input type="submit" value="Submit" /&gt;
...
&lt;!-- Активируем плагин проверки для формы 'test' --&gt;
&lt;script type="text/javascript"&gt;
function formCallback(result, form) {
	window.status = "valiation callback for form '"
                        + form.id + "': result = " + result;
}
var valid = new Validation('test',
           {immediate : true, onFormValidate : formCallback});
&lt;/script&gt;
</code></pre>
<p>Решение привожу в сокращенном виде, чтобы не засорять страницу длинными листингами, полное решение доступно <a href="http://pastie.org/private/ywsg4ihjnnafxpfvs0iaa" rel="nofollow noindex">на pastie</a>. Сам плагинчик брать на <a href="http://tetlaw.id.au/view/javascript/really-easy-field-validation">оффициальном сайте</a>. Там же есть подробный мануал, как переопределять сообщения/действия при ошибках, какие доступны опции проверки и многое другое. Надеюсь теперь валидация множественных radio в одной форме будет простой и прозрачной и не создаст никаких проблем.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2008/09/say_no_to_bicycle-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Образование по книгам: &#8220;AJAX in action&#8221;</title>
		<link>http://blog.copperred.net/2006/12/ajax_in_action/</link>
		<comments>http://blog.copperred.net/2006/12/ajax_in_action/#comments</comments>
		<pubDate>Fri, 15 Dec 2006 21:56:47 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[book / reading]]></category>
		<category><![CDATA[html / css]]></category>
		<category><![CDATA[javascript / ajax]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://blog.copperred.net/2006/12/ajax_in_action/</guid>
		<description><![CDATA[Второй день я хожу в легкой смеси экстаза с наркотическим опьянением: в кои-то веки наш "компьютерный" книжный магазин вовремя затарил хорошую книгу по новым технологиям. Даже душу не скребет отданная за нее сумма в 9 лат (~16 американских рублей), за свое образование и такого не жалко.
Надо сказать, что книгу я взял переводную "АJAX в действии", [...]]]></description>
			<content:encoded><![CDATA[<p><img width="76" height="96" alt="AJAX in action" id="image41" style="margin: 4px; padding: 2px; float: left" src="http://blog.copperred.net/wp-content/uploads/2006/12/crane_cover150.thumbnail.jpg" />Второй день я хожу в легкой смеси экстаза с наркотическим опьянением: в кои-то веки наш "компьютерный" книжный магазин вовремя затарил хорошую книгу по новым технологиям. Даже душу не скребет отданная за нее сумма в 9 лат (~16 американских рублей), за свое образование и такого не жалко.</p>
<p>Надо сказать, что книгу я взял переводную "АJAX в действии", поскольку оригинал у меня лежит на диске в виде PDF уже давно, но разобрать в ней что-то требует много времени. А вот бумажный экземпляр очень мило ездит со мной по всему городу и непрерывно читается: в электричке и троллейбусе, в автобусе и на остановке.</p>
<p><span id="more-42"></span> О самой книге можно сказать только хорошее. В ней очень подробно рассматриваются все плюсы ассинхронной технологии, правила построения удобных интерфейсов, техника работы с сервером.</p>
<p>Почти полглавы уделено граммотному построению DOM-структуры документа: специально для тех, кто до сих пор верстает таблицами. Целая глава посвещена существующим библиотекам JavaScript: Prototype, Sarissa, Scriptaculos, Rico. Упомянут Ruby on Rails. Сильный упор сделан на квалифицированное построение большого кода: чувствуется, что автору пришлось на самом деле разгребать JavaScript-модуль весом более полутора мегабайт.</p>
<p>О минусах скажу пока о мелкой детали: сорцы идут без табуляции. Тоесть читать их можно и не сложно, но все-таки с отступами шире чем в 1 пробел, они бы смотрелись гораздо лучше. Больше пока ничего сказать не могу ибо не нашел.</p>
<p>[tags]javascript, ajax, webdev, книги, программирование, образование[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2006/12/ajax_in_action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подсветка синтаксиса</title>
		<link>http://blog.copperred.net/2006/11/syntax_highlight/</link>
		<comments>http://blog.copperred.net/2006/11/syntax_highlight/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 03:21:09 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[blog / blogging]]></category>
		<category><![CDATA[javascript / ajax]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[syntax]]></category>

		<guid isPermaLink="false">http://copperred.net/blog/2006/11/syntax_highlight/</guid>
		<description><![CDATA[C этого момента в блоге начинает работать подсветка синтаксиса. Для этих целей будет использоватся пакет highlight.js поскольку использованный ранее iG: Syntax Highlighter на основе GeSHi не оправдал себя. Поживем увидим.
Кстати, недавно узнал о существовании сайта tohtml.com реализующего именно ту самую пресловутую расцветку синтаксиса. Тоже достаточно удобная штука, хотя меня не очень впечатлила его цветовая гамма. [...]]]></description>
			<content:encoded><![CDATA[<p>C этого момента в блоге начинает работать подсветка синтаксиса. Для этих целей будет использоватся пакет <a target="_blank" href="http://softwaremaniacs.org/blog/2006/11/28/highlight-js-1-0/">highlight.js</a> поскольку использованный ранее iG: Syntax Highlighter на основе GeSHi не оправдал себя. Поживем увидим.</p>
<p>Кстати, недавно узнал о существовании сайта <a href="http://tohtml.com">tohtml.com</a> реализующего именно ту самую пресловутую расцветку синтаксиса. Тоже достаточно удобная штука, хотя меня не очень впечатлила его цветовая гамма.  <span id="more-33"></span></p>
<p>Огромное спасибо pythy за исправление ошибочки в ссылке.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2006/11/syntax_highlight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Валидация множественных radio формы</title>
		<link>http://blog.copperred.net/2006/10/multiple_radio_input_validation/</link>
		<comments>http://blog.copperred.net/2006/10/multiple_radio_input_validation/#comments</comments>
		<pubDate>Wed, 04 Oct 2006 20:24:46 +0000</pubDate>
		<dc:creator>vestel</dc:creator>
				<category><![CDATA[javascript / ajax]]></category>
		<category><![CDATA[webdev / software engineering]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://copperred.net/blog/2006/10/%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%86%d0%b8%d1%8f-%d0%bc%d0%bd%d0%be%d0%b6%d0%b5%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d1%8b%d1%85-radio-%d1%84%d0%be%d1%80%d0%bc%d1%8b/</guid>
		<description><![CDATA[Была необходимость написать небольшую процедурку, которая бы проверяла во всех ли радиобоксах группы пользователь поставил точку. При этом основная заморочка заключалась в том, что это тест, в котором кроме радиобоксов, еще иногда могут встречаться тестовые инпуты и чекбоксы. Думал, что за 30 минут, я найду нужную мне функцию в интернете...
Не тут-то было. Валидаторов радиобоксов там [...]]]></description>
			<content:encoded><![CDATA[<p>Была необходимость написать небольшую процедурку, которая бы проверяла во всех ли радиобоксах группы пользователь поставил точку. При этом основная заморочка заключалась в том, что это тест, в котором кроме радиобоксов, еще иногда могут встречаться тестовые инпуты и чекбоксы. Думал, что за 30 минут, я найду нужную мне функцию в интернете...<br />
Не тут-то было. Валидаторов радиобоксов там действительно как грязи, но на серьезных тестах, они почему-то сыпались. Пришлось написать свой универсальный валидатор форм.</p>
<pre><code class="javascript">
function checkform(f)
{
var flag = true;
var prev = "";
for (var i = 0; i < elements.length; i++)   {
      var el = f.elements[i];
      if (el.type == 'radio') {
         if (prev != el.name)
       {         if (!flag)
          {
         alert('Warning! No answer selected');
           return false;
         }
       flag = false;
       prev = el.name;
   }
     flag = flag || el.checked;
} }
 return true; }
</code></pre>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.copperred.net/2006/10/multiple_radio_input_validation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

