<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Deerua about Coding: последние заметки с тегом &amp;laquo;foreach&amp;raquo;</title><link>http://deer.org.ua/keywords/foreach/</link><description></description><language>ru</language><generator>e2 (http://blogengine.ru/)</generator><item><title>Кавайная форма, или делаем Логин-форм как у Яндекса. (Labels as hints in form inputs)</title><guid isPermaLink="true">http://deer.org.ua/2009/08/18/1/</guid><link>http://deer.org.ua/2009/08/18/1/</link><comments>http://deer.org.ua/2009/08/18/1/comments/</comments><description>У нас есть простая Логин-форма&lt;pre&gt;&lt;span class="hl-brackets"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;form action&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;#&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;method&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;post&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
	&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;div class&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;label_input&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
		&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;label for&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_login&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;&lt;/span&gt;&lt;span class="hl-default"&gt;Логин&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-identifier"&gt;label&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
		&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;input type&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;text&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;name&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_login&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_login&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
	&amp;lt;&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-identifier"&gt;div&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
	&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;div class&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;label_input&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
		&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;label for&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_password&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;&lt;/span&gt;&lt;span class="hl-default"&gt;Пароль&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;lt;&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-identifier"&gt;label&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
		&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;input type&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;password&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;name&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_password&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;auth_password&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
	&amp;lt;&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-identifier"&gt;div&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
	&amp;lt;&lt;/span&gt;&lt;span class="hl-identifier"&gt;input type&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;submit&lt;/span&gt;&lt;span class="hl-quotes"&gt;" &lt;/span&gt;&lt;span class="hl-identifier"&gt;value&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;Отправить&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span class="hl-code"&gt;/&lt;/span&gt;&lt;span class="hl-identifier"&gt;form&lt;/span&gt;&lt;span class="hl-brackets"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;Метку (label) и инпут зарание возмём в див, пропишем ему в css относительное позиционирование, остальные елементы оформим на свой вкус.&lt;br /&gt;&lt;br /&gt;Дальше будет JavaScript &lt;pre&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;showLabels&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;inputs&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// список инпутов приходит обьектом {'input_id':''}
	// если нет, то мы уходим
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;typeof&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;inputs&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; != &lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;object&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;) &lt;/span&gt;&lt;span class="hl-reserved"&gt;return&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// функция которая прячет лейбл, если в форме есть данные
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;inputValueSH&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;someinput&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// что бы надёжно спрятать, запихнём повыше
		// почему-то свойство display не фурычит
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;someinput&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;value&lt;/span&gt;&lt;span class="hl-brackets"&gt;) &lt;/span&gt;&lt;span class="hl-identifier"&gt;pSib&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;someinput&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;top&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;-9999px&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// данные есть
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;else &lt;/span&gt;&lt;span class="hl-identifier"&gt;pSib&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;someinput&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;top&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;0&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// данных нет
	&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;i &lt;/span&gt;&lt;span class="hl-reserved"&gt;in &lt;/span&gt;&lt;span class="hl-identifier"&gt;inputs&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// дальше, разбиваем на список
		// аля foreach для бедных
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-builtin"&gt;document&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;getElementById&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// при блуре вызываем функцию проверки
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onblur&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){ &lt;/span&gt;&lt;span class="hl-identifier"&gt;inputValueSH&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// когда сфокусировались, убираем метку
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;onfocus&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(){ &lt;/span&gt;&lt;span class="hl-identifier"&gt;pSib&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;style&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;top&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;-9999px&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;;	&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// проверим на всякий ешё разок
		&lt;/span&gt;&lt;span class="hl-identifier"&gt;inputValueSH&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;return&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
&lt;/span&gt;&lt;span class="hl-identifier"&gt;addLoadEvent&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;() {
	&lt;/span&gt;&lt;span class="hl-comment"&gt;// настраиваем метки, для auth_login и auth_password
	&lt;/span&gt;&lt;span class="hl-identifier"&gt;showLabels&lt;/span&gt;&lt;span class="hl-brackets"&gt;({&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;auth_login&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;:&lt;/span&gt;&lt;span class="hl-quotes"&gt;''&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;auth_password&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;:&lt;/span&gt;&lt;span class="hl-quotes"&gt;''&lt;/span&gt;&lt;span class="hl-brackets"&gt;})&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;})&lt;/span&gt;&lt;span class="hl-default"&gt;; 	&lt;/span&gt;&lt;/pre&gt;&lt;ul class="r1pxc"&gt; 
&lt;li&gt;&lt;a target="_blank" href="/samples/forms/labels.html"&gt;
&lt;b&gt;Посмотреть Пример&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;hr /&gt;&lt;a href="http://deer.org.ua/2009/08/18/1/comments/"&gt;Комментарии&lt;/a&gt; к заметке&lt;br /&gt;&lt;br /&gt;Теги:&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/javascript/"&gt;javascript&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/javascript/foreach/"&gt;foreach&lt;/a&gt;&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/css/"&gt;css&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.deer.org.ua/tags/javascript/"&gt;javascript&lt;/a&gt;</description><pubDate>Tue, 18 Aug 2009 15:06:33 +0200</pubDate></item></channel></rss>