<?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>Just a bunch of code &#187; elements</title>
	<atom:link href="http://www.bunchacode.com/tag/elements/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bunchacode.com</link>
	<description></description>
	<lastBuildDate>Sun, 11 Sep 2011 19:56:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Cakephp custom dropdown menu/select  element</title>
		<link>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/</link>
		<comments>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:52:42 +0000</pubDate>
		<dc:creator>Funky Dude</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.bunchacode.com/?p=107</guid>
		<description><![CDATA[[UPDATED to allow multiple instances] [UPDATED bug fix] Hello everyone. The select tag that comes with html is pretty useful, but once in a while, one of your clients complains that it&#8217;s fugly. So you need to make  a custom one. And that&#8217;s what i just did. Damned clients! Requirements: jquery To do this you [...]]]></description>
			<content:encoded><![CDATA[<p><strong>[UPDATED to allow multiple instances]</strong><br />
<strong>[UPDATED bug fix]</strong></p>
<p>Hello everyone. The select tag that comes with html is pretty useful, but once in a while, one of your clients complains that it&#8217;s fugly. So you need to make  a custom one. And that&#8217;s what i just did. Damned clients!</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li> jquery</li>
</ul>
<p>To do this you need to create a file called <strong>customSelect.ctp</strong> in your app<strong>/views/elements folder</strong>(Of course you don&#8217;t NEED cakephp to use this.).</p>
<p>And the content said file would be(This example is for a category select menu.):<br />
<span id="more-107"></span></p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre>
<pre><span class="php"><span class="php-operator">&lt;</span>div <span class="php-keyword">class</span><span class="php-operator">=</span><span class="php-string">&quot;customSelect&quot;</span><span class="php-operator">&gt;</span>
<span class="php-operator">&lt;</span>div <span class="php-keyword">class</span><span class="php-operator">=</span><span class="php-string">&quot;selectLeft&quot;</span><span class="php-operator">&gt;</span>
<span class="php-operator">&lt;</span>div <span class="php-keyword">class</span><span class="php-operator">=</span><span class="php-string">&quot;selectOptions&quot;</span> style<span class="php-operator">=</span><span class="php-string">&quot;display:none;&quot;</span><span class="php-operator">&gt;</span><span class="php-var">$name</span><span class="php-brackets">)</span><span class="php-brackets">{</span> <span class="php-script-tag">?&gt;<span class="html"><span class="html-other-element">&lt;/div&gt;</span>
<span class="html-form-element">&lt;input class=<span class="html-attribute">&quot;selectInput&quot;</span> name=<span class="html-attribute">&quot;</span></span></span>&lt;?php</span> <span class="php-keyword">echo</span> <span class="php-var">$inputName</span>;<span class="php-script-tag">?&gt;<span class="html">&quot; type=&quot;hidden&quot; /&gt;<span class="html-other-element">&lt;/div&gt;</span>
<span class="html-other-element">&lt;div class=<span class="html-attribute">&quot;selectRight&quot;</span>&gt;</span>
<span class="html-other-element">&lt;div class=<span class="html-attribute">&quot;selectDropDownArrow&quot;</span>&gt;</span><span class="html-image-element">&lt;img src=<span class="html-attribute">&quot;img/dropDownArrow.jpg&quot;</span> alt=<span class="html-attribute">&quot;</span>&gt;</span>&gt;&quot; /&gt;<span class="html-other-element">&lt;/div&gt;</span>
<span class="html-other-element">&lt;/div&gt;</span>
<span class="html-other-element">&lt;/div&gt;</span>
<span class="html-script-element">&lt;script type=<span class="html-attribute">&quot;text/javascript&quot;</span>&gt;<span class="js"><span class="js"><span class="js-comment">// &lt;![CDATA[
</span>
$<span class="js-bracket">(</span><span class="js-client-keyword">document</span><span class="js-bracket">)</span>.ready<span class="js-bracket">(</span><span class="js-function-keyword">function</span><span class="js-bracket">(</span><span class="js-bracket">)</span><span class="js-bracket">{</span>
	<span class="js-comment">//set the default item to show
</span>
	setSelectedOption<span class="js-bracket">(</span><span class="js-string">''</span><span class="js-bracket">)</span>;
<span class="js-bracket">}</span><span class="js-bracket">)</span>;
<span class="js-comment">// ]]&gt;</span></span></span>&lt;/script&gt;</span></span></span></span></pre>
</div>
<p>the javascript file, customSelect.js</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</pre>
<pre><span class="php"><span class="php-var">$</span><span class="php-brackets">(</span>document<span class="php-brackets">)</span><span class="php-operator">.</span>ready<span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-comment">//capture clicks anywhere and hide dropdown menu
</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>click<span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>slideUp<span class="php-brackets">(</span><span class="php-string">'fast'</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;

<span class="php-comment">//click on the selected item div to toggle menu
</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectedCategoryDiv'</span><span class="php-brackets">)</span><span class="php-operator">.</span>click<span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span>e<span class="php-brackets">)</span>
<span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>siblings<span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>slideToggle<span class="php-brackets">(</span><span class="php-string">'fast'</span><span class="php-brackets">)</span>;
e<span class="php-operator">.</span>stopPropagation<span class="php-brackets">(</span><span class="php-brackets">)</span>;
<span class="php-keyword">return</span> <span class="php-keyword">false</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;

<span class="php-comment">//click on the down arrow to toggle menu
</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectDropDownArrow'</span><span class="php-brackets">)</span><span class="php-operator">.</span>click<span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span>e<span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>parent<span class="php-brackets">(</span><span class="php-string">'.selectRight'</span><span class="php-brackets">)</span><span class="php-operator">.</span>siblings<span class="php-brackets">(</span><span class="php-string">'.selectLeft'</span><span class="php-brackets">)</span><span class="php-operator">.</span>children<span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>slideToggle<span class="php-brackets">(</span><span class="php-string">'fast'</span><span class="php-brackets">)</span>;
e<span class="php-operator">.</span>stopPropagation<span class="php-brackets">(</span><span class="php-brackets">)</span>;
<span class="php-keyword">return</span> <span class="php-keyword">false</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;

<span class="php-comment">//hover on menu item to change color
</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>children<span class="php-brackets">(</span><span class="php-string">'div'</span><span class="php-brackets">)</span><span class="php-operator">.</span>hover<span class="php-brackets">(</span>
<span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>addClass<span class="php-brackets">(</span><span class="php-string">'hoverItem'</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span>,
<span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>removeClass<span class="php-brackets">(</span><span class="php-string">'hoverItem'</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span>
<span class="php-brackets">)</span>;

<span class="php-comment">//click on menu item to select
</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>children<span class="php-brackets">(</span><span class="php-string">'div'</span><span class="php-brackets">)</span><span class="php-operator">.</span>click<span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span>e<span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>parent<span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>siblings<span class="php-brackets">(</span><span class="php-string">'.selectInput'</span><span class="php-brackets">)</span><span class="php-operator">.</span>val<span class="php-brackets">(</span><span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>attr<span class="php-brackets">(</span><span class="php-string">'value'</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>parent<span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>slideUp<span class="php-brackets">(</span><span class="php-string">'fast'</span><span class="php-brackets">)</span>;
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>parent<span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span>siblings<span class="php-brackets">(</span><span class="php-string">'.selectedCategoryDiv'</span><span class="php-brackets">)</span><span class="php-operator">.</span>html<span class="php-brackets">(</span><span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>html<span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;
e<span class="php-operator">.</span>stopPropagation<span class="php-brackets">(</span><span class="php-brackets">)</span>;
<span class="php-keyword">return</span> <span class="php-keyword">false</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;
<span class="php-function">function</span> setSelectedOption<span class="php-brackets">(</span>id<span class="php-brackets">)</span>
<span class="php-brackets">{</span>
<span class="php-keyword">if</span><span class="php-brackets">(</span>id <span class="php-operator">!</span><span class="php-operator">=</span> <span class="php-string">''</span><span class="php-brackets">)</span>
<span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span><span class="php-string">'.selectOptions'</span><span class="php-brackets">)</span><span class="php-operator">.</span><span class="php-function">each</span><span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>children<span class="php-brackets">(</span><span class="php-string">'div'</span><span class="php-brackets">)</span><span class="php-operator">.</span><span class="php-function">each</span><span class="php-brackets">(</span><span class="php-function">function</span><span class="php-brackets">(</span><span class="php-brackets">)</span><span class="php-brackets">{</span>
<span class="php-keyword">if</span><span class="php-brackets">(</span><span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>attr<span class="php-brackets">(</span><span class="php-string">'value'</span><span class="php-brackets">)</span> <span class="php-operator">=</span><span class="php-operator">=</span> id<span class="php-brackets">)</span>
<span class="php-var">$</span><span class="php-brackets">(</span>this<span class="php-brackets">)</span><span class="php-operator">.</span>click<span class="php-brackets">(</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span><span class="php-brackets">)</span>;
<span class="php-brackets">}</span>
<span class="php-brackets">}</span></span></pre>
</div>
<p>the css file, customSelect.css</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
</pre>
<pre><span class="php"><span class="php-operator">.</span>customSelect
<span class="php-brackets">{</span>
padding<span class="php-operator">:</span><span class="php-number">0</span> <span class="php-number">4</span>px;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectedCategoryDiv
<span class="php-brackets">{</span>
background<span class="php-operator">-</span>color<span class="php-operator">:</span><span class="php-comment">#FFFFFF;
</span>
padding<span class="php-operator">:</span><span class="php-number">4</span>px <span class="php-number">5</span>px;
font<span class="php-operator">-</span>weight<span class="php-operator">:</span>bold;
font<span class="php-operator">-</span>size<span class="php-operator">:</span><span class="php-number">1</span><span class="php-number">6</span>px;
width<span class="php-operator">:</span><span class="php-number">2</span><span class="php-number">1</span><span class="php-number">5</span>px;
cursor<span class="php-operator">:</span>pointer;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectLeft
<span class="php-brackets">{</span>
<span class="php-var-type">float</span><span class="php-operator">:</span>left;
border<span class="php-operator">-</span>top<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#93a8ad;
</span>
border<span class="php-operator">-</span>bottom<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#FFFFFF;
</span>
border<span class="php-operator">-</span>left<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#bac8cb;
</span>
border<span class="php-operator">-</span>right<span class="php-operator">:</span><span class="php-number">1</span>px dotted <span class="php-comment">#93a8ad;
</span>
position<span class="php-operator">:</span>relative;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectOptions
<span class="php-brackets">{</span>
position<span class="php-operator">:</span>absolute;
top<span class="php-operator">:</span><span class="php-number">2</span><span class="php-number">9</span>px;
left<span class="php-operator">:</span><span class="php-number">0</span>px;
background<span class="php-operator">-</span>color<span class="php-operator">:</span><span class="php-comment">#FFFFFF;
</span>
width<span class="php-operator">:</span><span class="php-number">2</span><span class="php-number">2</span><span class="php-number">5</span>px;
padding<span class="php-operator">:</span><span class="php-number">0</span>;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectOptions div
<span class="php-brackets">{</span>
padding<span class="php-operator">:</span><span class="php-number">2</span>px <span class="php-number">7</span>px;
cursor<span class="php-operator">:</span>pointer;
font<span class="php-operator">-</span>size<span class="php-operator">:</span><span class="php-number">1</span><span class="php-number">6</span>px;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectRight
<span class="php-brackets">{</span>
<span class="php-var-type">float</span><span class="php-operator">:</span>left;
background<span class="php-operator">-</span>color<span class="php-operator">:</span><span class="php-comment">#FFFFFF;
</span>
border<span class="php-operator">-</span>top<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#93a8ad;
</span>
border<span class="php-operator">-</span>bottom<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#FFFFFF;
</span>
border<span class="php-operator">-</span>left<span class="php-operator">:</span>none;
border<span class="php-operator">-</span>right<span class="php-operator">:</span><span class="php-number">1</span>px solid <span class="php-comment">#FFFFFF;
</span>
<span class="php-brackets">}</span>
<span class="php-operator">.</span>selectDropDownArrow
<span class="php-brackets">{</span>
padding<span class="php-operator">:</span><span class="php-number">7</span>px <span class="php-number">8</span>px <span class="php-number">6</span>px <span class="php-number">8</span>px;
cursor<span class="php-operator">:</span>pointer;
border<span class="php-operator">:</span>none;
margin<span class="php-operator">:</span><span class="php-number">0</span>;
<span class="php-brackets">}</span>
<span class="php-operator">.</span>hoverItem
<span class="php-brackets">{</span>
color<span class="php-operator">:</span><span class="php-comment">#ef3e36;
</span>
<span class="php-brackets">}</span></span></pre>
</div>
<p>and the image<br />
<img class="alignnone size-full wp-image-119 colorbox-107" title="dropDownArrow" src="http://www.bunchacode.com/wp-content/uploads/2009/07/dropDownArrow.jpg" alt="dropDownArrow" width="8" height="8" /></p>
<p>You need to include the javascript and js files in your layout file.<br />
And to call the element from your view files, you can do this</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
7
</pre>
<pre><span class="php"><span class="php-comment">//input name is the name of original select
</span>
<span class="php-comment">//datais an array of menu items, how you structure is up to you
</span>
<span class="php-comment">//selected is the value of the selected menu item
</span>
<span class="php-keyword">echo</span> <span class="php-var">$this</span><span class="php-operator">-</span><span class="php-operator">&amp;</span>gt;element<span class="php-brackets">(</span><span class="php-string">'customSelect'</span>,<span class="php-keyword">array</span><span class="php-brackets">(</span><span class="php-string">'inputName'</span><span class="php-operator">=</span><span class="php-operator">&amp;</span>gt;<span class="php-string">'data[category]'</span>,<span class="php-string">'data'</span><span class="php-operator">=</span><span class="php-operator">&amp;</span>gt;<span class="php-var">$categories</span>,<span class="php-string">'selected'</span><span class="php-operator">=</span><span class="php-operator">&amp;</span>gt;<span class="php-string">''</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;</span></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

