Files
rappaurio-sae501_502/app/node_modules/cejs/_documents/JsDoc/symbols/src/D__USB_cgi-bin_lib_JS_interact_form_select_input.origin.js.html
2023-09-25 13:27:24 +02:00

1103 lines
224 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
.KEYW {color: #933;}
.COMM {color: #bbb; font-style: italic;}
.NUMB {color: #393;}
.STRN {color: #393;}
.REGX {color: #339;}
.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
</style></head><body><pre><span class='line'> 1</span> <span class="TOKN"></span><span class="WHIT">
<span class='line'> 2</span> </span><span class="COMM">/**
<span class='line'> 3</span> * @name CeL 下拉式表單 function
<span class='line'> 4</span> * @fileoverview
<span class='line'> 5</span> * 本檔案包含了下拉選擇式表單的 functions。
<span class='line'> 6</span> * @since
<span class='line'> 7</span> */</span><span class="WHIT">
<span class='line'> 8</span>
<span class='line'> 9</span> </span><span class="COMM">/*
<span class='line'> 10</span> TODO:
<span class='line'> 11</span> HTML 5 &lt;datalist> Tag
<span class='line'> 12</span> date
<span class='line'> 13</span> http://plugins.jquery.com/project/timepicker
<span class='line'> 14</span> http://digitalbush.com/projects/masked-input-plugin/
<span class='line'> 15</span> 理想:
<span class='line'> 16</span> http://gs.statcounter.com/
<span class='line'> 17</span>
<span class='line'> 18</span>
<span class='line'> 19</span> http://plugins.jquery.com/search/node/Autocomplete+type%3Aproject_project
<span class='line'> 20</span> http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
<span class='line'> 21</span> http://jsgears.com/thread-114-1-1.html
<span class='line'> 22</span>
<span class='line'> 23</span> set focus/blue background-image instead of HTML 5 placeholder text
<span class='line'> 24</span> http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute
<span class='line'> 25</span> The placeholder attribute represents a short hint (a word or short phrase) intended to aid the user with data entry.
<span class='line'> 26</span> e.g., background-image: url(http://www.google.com/cse/intl/en/images/google_custom_search_watermark.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;
<span class='line'> 27</span> or
<span class='line'> 28</span> http://perldoc.perl.org/
<span class='line'> 29</span> usually show a &lt;div>. show &lt;input> only at focus.
<span class='line'> 30</span>
<span class='line'> 31</span>
<span class='line'> 32</span> http://miketaylr.com/pres/html5/forms2.html
<span class='line'> 33</span> http://people.opera.com/brucel/demo/html5-forms-demo.html
<span class='line'> 34</span> http://www.erichynds.com/examples/jquery-multiselect/examples.htm
<span class='line'> 35</span> http://x.wawooo.com/archives/891
<span class='line'> 36</span>
<span class='line'> 37</span> http://www.google.com.tw/dictionary
<span class='line'> 38</span> 鍵盤選擇時同時改變值
<span class='line'> 39</span> */</span><span class="WHIT">
<span class='line'> 40</span>
<span class='line'> 41</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">CeL</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="NAME">CeL.setup_module</span><span class="PUNC">(</span><span class="STRN">'interact.form.select_input'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="NAME">require</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'interact.DOM.get_node_offset|interact.DOM.parse_URI'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">library_namespace</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">load_arguments</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 46</span>
<span class='line'> 47</span> </span><span class="COMM">// requiring</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">get_node_offset</span><span class="PUNC">,</span><span class="NAME">parse_URI</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">library_namespace.use_function</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span>
<span class='line'> 51</span> </span><span class="NAME">library_namespace.include_module_resource</span><span class="PUNC">(</span><span class="STRN">'select_input.css'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span>
<span class='line'> 53</span>
<span class='line'> 54</span> </span><span class="COMM">/**
<span class='line'> 55</span> * 簡易型 interact.DOM.XML_node @ interact.form.select_input
<span class='line'> 56</span> * @param tag p.appendChild tag
<span class='line'> 57</span> * @param p parent node
<span class='line'> 58</span> * @param t text
<span class='line'> 59</span> * @param classN className
<span class='line'> 60</span> * @inner
<span class='line'> 61</span> * @ignore
<span class='line'> 62</span> * @return
<span class='line'> 63</span> */</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">classN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_e</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Object</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createTextNode</span><span class="PUNC">(</span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="NAME">_e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="NAME">_e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">classN</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT"> </span><span class="NAME">_e.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">classN</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="NAME">_e.appendChild</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="NAME">_e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">_e</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">p.appendChild</span><span class="PUNC">(</span><span class="NAME">_e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_e</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span>
<span class='line'> 83</span>
<span class='line'> 84</span> </span><span class="COMM">/**
<span class='line'> 85</span> * get scrollbar height
<span class='line'> 86</span> * @return
<span class='line'> 87</span> * @since 2008/9/3 23:31:21
<span class='line'> 88</span> * @inner
<span class='line'> 89</span> * @ignore
<span class='line'> 90</span> * @see
<span class='line'> 91</span> * http://jdsharp.us/jQuery/minute/calculate-scrollbar-width.php
<span class='line'> 92</span> * lazy evaluation
<span class='line'> 93</span> * http://peter.michaux.ca/articles/lazy-function-definition-pattern
<span class='line'> 94</span> */</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">scrollbar_width</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">scrollbar_width</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">_f.w</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">document.body</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p.style</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="NAME">s.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'80px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT"> </span><span class="COMM">// 有時沒這行才出得來</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT"> </span><span class="COMM">// c.style.width='100%';</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT"> </span><span class="NAME">s.overflow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'hidden'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.offsetWidth</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">s.overflow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">_f.w</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">c.offsetWidth</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT"> </span><span class="COMM">// sl('scrollbar_width: '+w+'-'+c.offsetWidth+'='+_f.w);</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">document.body.removeChild</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_f.w</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span>
<span class='line'>112</span>
<span class='line'>113</span> </span><span class="COMM">/**
<span class='line'>114</span> * scroll 到可以看到 object
<span class='line'>115</span> * TODO:
<span class='line'>116</span> * 考慮可能沒 scrollbar
<span class='line'>117</span> * 包括橫向
<span class='line'>118</span> * @param o object
<span class='line'>119</span> * @param [p] parentNode to scroll
<span class='line'>120</span> * @return
<span class='line'>121</span> * @since 2008/9/3 23:31:29
<span class='line'>122</span> * @inner
<span class='line'>123</span> * @ignore
<span class='line'>124</span> */</span><span class="WHIT">
<span class='line'>125</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">scroll_to_show</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p.parentNode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">p.offsetHeight</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">p.scrollHeight</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT"> </span><span class="COMM">//sl('scroll_to_show: '+p.scrollTop+', '+p.scrollHeight+', '+p.offsetHeight+', '+o.offsetTop);</span><span class="WHIT">
<span class='line'>132</span>
<span class='line'>133</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.offsetTop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">p.scrollTop</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.offsetTop</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o.offsetHeight</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">p.offsetHeight</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">scrollbar_width</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">p.scrollTop</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.offsetTop</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span>
<span class='line'>141</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT"> </span><span class="NAME">p.scrollTop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span>
<span class='line'>145</span>
<span class='line'>146</span> </span><span class="COMM">/*
<span class='line'>147</span>
<span class='line'>148</span> {
<span class='line'>149</span> title: '',
<span class='line'>150</span> name: '',
<span class='line'>151</span> container: 'id' | obj,
<span class='line'>152</span> list: [] | {} | {group1:{}, group2:[],.. },
<span class='line'>153</span> default: '' | [],
<span class='line'>154</span> type: 'select' | 'radio' | 'checkbox',
<span class='line'>155</span> }
<span class='line'>156</span>
<span class='line'>157</span> return &lt;select>
<span class='line'>158</span>
<span class='line'>159</span>
<span class='line'>160</span> TODO:
<span class='line'>161</span> 複選 &lt;select>
<span class='line'>162</span> &lt;radio>
<span class='line'>163</span> &lt;checkbox>
<span class='line'>164</span> +&lt;label>
<span class='line'>165</span> autocomplete: 假如所有備取 list 都有一樣的 prefix則自動完成。
<span class='line'>166</span> 把後面的用反白自動完成。
<span class='line'>167</span>
<span class='line'>168</span> 在 list 上下安排三角onmouseover 即可自動滾動。
<span class='line'>169</span>
<span class='line'>170</span> color panel
<span class='line'>171</span>
<span class='line'>172</span> http://www.itlearner.com/code/js_ref/choi3.htm
<span class='line'>173</span> selectName.options[i]=new Options("option_value","option_Text", defaultSelected, selected);
<span class='line'>174</span> */</span><span class="WHIT">
<span class='line'>175</span>
<span class='line'>176</span> </span><span class="COMM">/**
<span class='line'>177</span> * container object, list
<span class='line'>178</span> * @param o
<span class='line'>179</span> * @param l
<span class='line'>180</span> * @return
<span class='line'>181</span> * @inner
<span class='line'>182</span> * @ignore
<span class='line'>183</span> */</span><span class="WHIT">
<span class='line'>184</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">menu_creater</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>185</span>
<span class='line'>186</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span>
<span class='line'>188</span> </span><span class="WHIT"> </span><span class="WHIT">
<span class='line'>189</span>
<span class='line'>190</span> </span><span class="COMM">// ===================================================</span><span class="WHIT">
<span class='line'>191</span>
<span class='line'>192</span> </span><span class="KEYW">var</span><span class="WHIT">
<span class='line'>193</span>
<span class='line'>194</span> </span><span class="COMM">// class private -----------------------------------</span><span class="WHIT">
<span class='line'>195</span>
<span class='line'>196</span>
<span class='line'>197</span> </span><span class="COMM">/* 可紀錄的 set class name不過對大多數人來說更常用的是 instance.setClassName
<span class='line'>198</span>
<span class='line'>199</span> usage:
<span class='line'>200</span> (item[, obj]) set obj to className item, return real className that setted
<span class='line'>201</span> (0,'prefix') set prefix & 重設(全部重跑)
<span class='line'>202</span> */</span><span class="WHIT">
<span class='line'>203</span> </span><span class="NAME">setClassName</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">noRec</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// (0, prefix) or (item, object)</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">_.classNameSet</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">_t.settedClass</span><span class="PUNC">)</span><span class="NAME">_t.settedClass</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span>
<span class='line'>207</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="PUNC">||</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">===</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT"> </span><span class="COMM">// 設定並回傳 className</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setClassName: test '+'class_'+i+': '+('class_'+i in _t?'&lt;em>YES&lt;/em>':'none'));</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">?</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">charAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">===</span><span class="STRN">'~'</span><span class="PUNC">?</span><span class="NAME">s.prefix</span><span class="PUNC">+</span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="STRN">'class_'</span><span class="PUNC">+</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">===</span><span class="STRN">'error'</span><span class="PUNC">||</span><span class="NAME">i</span><span class="PUNC">===</span><span class="STRN">'warning'</span><span class="PUNC">)</span><span class="NAME">s.unshift</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">[</span><span class="STRN">'class_'</span><span class="PUNC">+</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">s.push</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">[</span><span class="STRN">'class_'</span><span class="PUNC">+</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.join</span><span class="PUNC">(</span><span class="STRN">' '</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setClassName: set '+o+(s?' to ['+s+']':', &lt;em>There is no ['+i+'] in classNameSet or instance set.&lt;/em>'));</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.className</span><span class="PUNC">=</span><span class="NAME">s</span><span class="PUNC">,</span><span class="PUNC">!</span><span class="NAME">noRec</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">_t.settedClass.push</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span>
<span class='line'>225</span> </span><span class="WHIT"> </span><span class="NAME">s.prefix</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_t.settedClass</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT"> </span><span class="COMM">// 重設(全部重跑)</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">o.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT"> </span><span class="NAME">_f.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>231</span>
<span class='line'>232</span> </span><span class="NAME">funcButton</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">,</span><span class="NAME">f</span><span class="PUNC">,</span><span class="NAME">title</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// add text t, function f to instance _t</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">,</span><span class="NAME">_p.listO</span><span class="PUNC">,</span><span class="STRN">'['</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">b</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'functionB'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT"> </span><span class="NAME">b</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'functionT'</span><span class="PUNC">,</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT"> </span><span class="NAME">b.title</span><span class="PUNC">=</span><span class="NAME">title</span><span class="PUNC">,</span><span class="NAME">b.onclick</span><span class="PUNC">=</span><span class="NAME">f</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="STRN">']'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">b</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>241</span>
<span class='line'>242</span> </span><span class="COMM">// 簡易型</span><span class="WHIT">
<span class='line'>243</span> </span><span class="NAME">removeAllChild</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT"> </span><span class="NAME">o.innerHTML</span><span class="PUNC">=</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>247</span>
<span class='line'>248</span> </span><span class="COMM">// show/hide list</span><span class="WHIT">
<span class='line'>249</span> </span><span class="NAME">showList</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">show</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// ():get, 0:hide, 1:show</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.listO</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span>
<span class='line'>252</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">o.style</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">show</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">get_node_offset</span><span class="PUNC">(</span><span class="NAME">_p.inputO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT"> </span><span class="NAME">s.top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.top</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c.height</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">s.left</span><span class="PUNC">=</span><span class="NAME">c.left</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span>
<span class='line'>259</span> </span><span class="WHIT"> </span><span class="NAME">s.width</span><span class="PUNC">=</span><span class="NAME">c.width</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT"> </span><span class="NAME">s.height</span><span class="PUNC">=</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// reset</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">s.display</span><span class="PUNC">=</span><span class="STRN">'block'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.maxListHeight</span><span class="PUNC">&&</span><span class="NAME">o.offsetHeight</span><span class="PUNC">></span><span class="NAME">_t.maxListHeight</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT"> </span><span class="NAME">s.height</span><span class="PUNC">=</span><span class="NAME">_t.maxListHeight</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">show</span><span class="PUNC">!=</span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">s.display</span><span class="PUNC">=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span>
<span class='line'>267</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">removeAllChild</span><span class="PUNC">(</span><span class="NAME">_p.arrowO</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">_.textSet</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">!=</span><span class="STRN">'none'</span><span class="PUNC">?</span><span class="STRN">'hideList'</span><span class="PUNC">:</span><span class="STRN">'showList'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">s.display</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span>
<span class='line'>271</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">!=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>273</span>
<span class='line'>274</span>
<span class='line'>275</span> </span><span class="COMM">/* 準備選擇清單的某一項
<span class='line'>276</span> TODO:
<span class='line'>277</span> 自動完成
<span class='line'>278</span> 到最後若可能自動轉到全部
<span class='line'>279</span>
<span class='line'>280</span> */</span><span class="WHIT">
<span class='line'>281</span> </span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// control key pressed</span><span class="WHIT">
<span class='line'>282</span> </span><span class="NAME">readyTo</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">e</span><span class="PUNC">)</span><span class="NAME">e</span><span class="PUNC">=</span><span class="NAME">event</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">,</span><span class="NAME">gI</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">&&</span><span class="COMM">/*(can_use_special_attribute?o.getAttribute("sIndex"):o.sIndex)*/</span><span class="NAME">o.sIndex</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT"> </span><span class="COMM">//sl('readyTo: '+e.type+', key: '+(e.keyCode||e.which||e.charCode)+', _p.listA: '+(_p.listA&&_p.listA.length));</span><span class="WHIT">
<span class='line'>288</span>
<span class='line'>289</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">_p.listA</span><span class="PUNC">||</span><span class="PUNC">!</span><span class="NAME">_p.listA.length</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span>
<span class='line'>291</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="PUNC">===</span><span class="STRN">'mouseover'</span><span class="PUNC">||</span><span class="NAME">e.type</span><span class="PUNC">===</span><span class="STRN">'mouseout'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_p.readyItem</span><span class="PUNC">)</span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">_p.readyItem</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="PUNC">===</span><span class="STRN">'mouseover'</span><span class="PUNC">)</span><span class="NAME">c</span><span class="PUNC">=</span><span class="STRN">'item_select'</span><span class="PUNC">,</span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">=</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">_p.readyItem</span><span class="PUNC">===</span><span class="NAME">o</span><span class="PUNC">)</span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT"> </span><span class="COMM">// 需更改 _p.inputO.onkeyup 以防止重新 list!!</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">e.keyCode</span><span class="PUNC">||</span><span class="NAME">e.which</span><span class="PUNC">||</span><span class="NAME">e.charCode</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">13</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_p.readyItem</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT"> </span><span class="COMM">//sl('readyTo: 以鍵盤選擇: '+_p.readyItem.innerHTML);</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT"> </span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">,</span><span class="NAME">_p.readyItem.onclick</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 用 .click() 無效!</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT"> </span><span class="COMM">// key input 用鍵盤控制上下 ←↑→↓: 37~40</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">38</span><span class="PUNC">||</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">40</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT"> </span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.readyItem</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT"> </span><span class="COMM">//sl('readyTo: 以鍵盤移至: '+(o&&(o.getAttribute("sIndex")+','+o.sIndex)));</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="PUNC">)</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">40</span><span class="PUNC">?</span><span class="NUMB">0</span><span class="PUNC">:</span><span class="NAME">_p.listA.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT"> </span><span class="COMM">//if(!o.getAttribute)throw 1; IE 可用 getAttributeFF 或許在 appendChild 之後屬性重設?,得用 o.sIndex</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">gI</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">38</span><span class="PUNC">?</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">:</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">&lt;</span><span class="NUMB">0</span><span class="PUNC">||</span><span class="NAME">c</span><span class="PUNC">>=</span><span class="NAME">_p.listA.length</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span>
<span class='line'>313</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT"> </span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span>
<span class='line'>318</span> </span><span class="WHIT"> </span><span class="NAME">scroll_to_show</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">_p.listO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="STRN">'item_select'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">35</span><span class="PUNC">||</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">36</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// 35: End, 36: Home</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.readyItem</span><span class="PUNC">)</span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT"> </span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">36</span><span class="PUNC">?</span><span class="NUMB">0</span><span class="PUNC">:</span><span class="NAME">_p.listA.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">scroll_to_show</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">_p.listO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="STRN">'item_select'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">33</span><span class="PUNC">||</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">34</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// 33: PageUP, 34: PageDown</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT"> </span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.readyItem</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">gI</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">33</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">_p.listO.scrollTop</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">&&</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">offsetTop</span><span class="PUNC">></span><span class="NAME">t</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">_p.listO.scrollTop</span><span class="PUNC">+</span><span class="NAME">_p.listO.offsetHeight</span><span class="PUNC">-</span><span class="NAME">scrollbar_width</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">_p.listA.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">&&</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">+</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">offsetTop</span><span class="PUNC">&lt;</span><span class="NAME">t</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT"> </span><span class="COMM">//sl('readyTo: Page: '+i+', top: '+t+', scroll: '+_p.listO.scrollTop);</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">==</span><span class="NAME">gI</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">33</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">-</span><span class="PUNC">=</span><span class="NAME">_p.listO.offsetHeight</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">&lt;</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">&&</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">offsetTop</span><span class="PUNC">></span><span class="NAME">t</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">_p.listO.offsetHeight</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">_p.listA.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">&&</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">+</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">offsetTop</span><span class="PUNC">&lt;</span><span class="NAME">t</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT"> </span><span class="COMM">//sl('readyTo: Page: '+i+', top: '+t+', height: '+_p.listO.offsetHeight);</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT"> </span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">_p.listA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT"> </span><span class="NAME">scroll_to_show</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">_p.listO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="STRN">'item_select'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span>
<span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>358</span>
<span class='line'>359</span> </span><span class="COMM">//can_use_special_attribute,</span><span class="WHIT">
<span class='line'>360</span>
<span class='line'>361</span> </span><span class="COMM">// 顯示清單的工具函數</span><span class="WHIT">
<span class='line'>362</span> </span><span class="NAME">setList</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">force</span><span class="PUNC">,</span><span class="NAME">limit</span><span class="PUNC">,</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">limit</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">limit</span><span class="PUNC">=</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">_t.maxList</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="NAME">_.maxList</span><span class="PUNC">:</span><span class="NAME">_t.maxList</span><span class="PUNC">||</span><span class="NAME">Number.MAX_VALUE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">f</span><span class="PUNC">)</span><span class="NAME">f</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">=</span><span class="NAME">_t.onList</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'item'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">o.title</span><span class="PUNC">=</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">=</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">||</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT"> </span><span class="NAME">o.onmouseover</span><span class="PUNC">=</span><span class="NAME">o.onmouseout</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">readyTo.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">e</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT"> </span><span class="NAME">o.onclick</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">=</span><span class="NAME">_t.onSelect</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">_t.onInput</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>374</span>
<span class='line'>375</span> </span><span class="WHIT"> </span><span class="COMM">// 這邊本來放在下面 for 的地方</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">,</span><span class="NAME">_p.listO.appendChild</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT"> </span><span class="COMM">//if(!can_use_special_attribute){o.setAttribute("sIndex",1);can_use_special_attribute=o.getAttribute("sIndex")?1:-1;}</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT"> </span><span class="COMM">//if(can_use_special_attribute==1)o.setAttribute("sIndex",_p.listA.length);else o.sIndex=_p.listA.length;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT"> </span><span class="NAME">o.sIndex</span><span class="PUNC">=</span><span class="NAME">_p.listA.length</span><span class="PUNC">;</span><span class="COMM">//o.setAttribute("sIndex",o.sIndex=_p.listA.length);</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT"> </span><span class="NAME">_p.listA.push</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span>
<span class='line'>382</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span>
<span class='line'>385</span> </span><span class="WHIT"> </span><span class="COMM">//_t.showList(0);</span><span class="WHIT">
<span class='line'>386</span>
<span class='line'>387</span> </span><span class="WHIT"> </span><span class="NAME">_p.listO</span><span class="PUNC">=</span><span class="NAME">removeAllChild</span><span class="PUNC">(</span><span class="NAME">_p.listO</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">_p.listA</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">_p.readyItem</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">l.length</span><span class="PUNC">&&</span><span class="NAME">c</span><span class="PUNC">&lt;</span><span class="NAME">limit</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">&lt;</span><span class="NAME">limit</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span>
<span class='line'>397</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setList: list '+c+' items, key '+k+'=?'+_t.setValue());</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">1</span><span class="PUNC">&&</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">==</span><span class="NAME">k</span><span class="PUNC">)</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 僅有一個且與 key 相同</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">force</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">c</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 無 list</span><span class="WHIT">
<span class='line'>400</span>
<span class='line'>401</span> </span><span class="WHIT"> </span><span class="COMM">// add function</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">!=</span><span class="NAME">_t.allListCount</span><span class="PUNC">)</span><span class="NAME">funcButton</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">_.textSet.allBtn</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.doFunc</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="NAME">_t.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">_t.setList</span><span class="PUNC">(</span><span class="NAME">_t.setAllList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="NAME">Number.MAX_VALUE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="STRN">'顯示全部 '</span><span class="PUNC">+</span><span class="NAME">_t.allListCount</span><span class="PUNC">+</span><span class="STRN">' 列表。'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">funcButton</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">_.textSet.clearBtn</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.doFunc</span><span class="PUNC">=</span><span class="NUMB">2</span><span class="PUNC">;</span><span class="NAME">_t.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">_t.onInput</span><span class="PUNC">(</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="STRN">'清除輸入內容,重新列表。'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT"> </span><span class="NAME">funcButton</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">_.textSet.closeBtn</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.doFunc</span><span class="PUNC">=</span><span class="NUMB">3</span><span class="PUNC">;</span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="STRN">'close menu \n關閉列表'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span>
<span class='line'>406</span> </span><span class="WHIT"> </span><span class="NAME">showList.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_t.listCount</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>409</span>
<span class='line'>410</span> </span><span class="COMM">// return verify 之後的 key(&lt;input>) 值</span><span class="WHIT">
<span class='line'>411</span> </span><span class="NAME">do_verify</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">_t.verify</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">||</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT"> </span><span class="COMM">//sl('do_verify: input status: '+(c==1?'warning':c==2?'error':'OK'));</span><span class="WHIT">
<span class='line'>414</span>
<span class='line'>415</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">===</span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 可以設定 key 值!</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">1</span><span class="PUNC">?</span><span class="STRN">'warning'</span><span class="PUNC">:</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">2</span><span class="PUNC">?</span><span class="STRN">'error'</span><span class="PUNC">:</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputO</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span>
<span class='line'>418</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>420</span>
<span class='line'>421</span> </span><span class="COMM">// 簡易設定常用的 onInput 型式</span><span class="WHIT">
<span class='line'>422</span> </span><span class="NAME">searchInList</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// o: 傳入 (list, index, key)</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">===</span><span class="STRN">'string'</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">f</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">_.searchFunctionSet</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">f</span><span class="PUNC">=</span><span class="NAME">_.searchFunctionSet</span><span class="PUNC">[</span><span class="NAME">f</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span>
<span class='line'>426</span> </span><span class="WHIT"> </span><span class="COMM">// 因為允許傳入 list所以不能在這邊用 _t.setAllList() 判別函數,而得要寫一個泛用的。</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_t.onInput</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="NAME">L</span><span class="PUNC">,</span><span class="NAME">force</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT"> </span><span class="COMM">//sl('searchInList, onInput: search ['+k+'] use '+f);</span><span class="WHIT">
<span class='line'>429</span>
<span class='line'>430</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">L</span><span class="PUNC">)</span><span class="NAME">L</span><span class="PUNC">=</span><span class="NAME">_t.setAllList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">=</span><span class="NAME">do_verify.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">||</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>432</span>
<span class='line'>433</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span>
<span class='line'>435</span> </span><span class="WHIT"> </span><span class="COMM">//sl('searchInList: search '+(L instanceof Array?'array':'object'));</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">L</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="COMM">//new L.constructor();</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">L.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">?</span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">L</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">&&</span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">l.push</span><span class="PUNC">(</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// search value</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">L</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">?</span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">L</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="NAME">i</span><span class="PUNC">&&</span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">||</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">&&</span><span class="NAME">f</span><span class="PUNC">(</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">L</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// search key+value</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT"> </span><span class="NAME">_t.setList</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">force</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span>
<span class='line'>448</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>449</span>
<span class='line'>450</span>
<span class='line'>451</span> </span><span class="COMM">/**
<span class='line'>452</span> * 切換 [input] / inputted [span]
<span class='line'>453</span> * @param {Boolean|undefined} to_input 切換至 input or not. default: 切換至 [input]
<span class='line'>454</span> * @return
<span class='line'>455</span> * @private
<span class='line'>456</span> * @inner
<span class='line'>457</span> * @ignore
<span class='line'>458</span> */</span><span class="WHIT">
<span class='line'>459</span> </span><span class="NAME">triggerToInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">to_input</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">to_input</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_input</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT"> </span><span class="COMM">// to &lt;input></span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_t.allListCount</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'inline'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>466</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'inline'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>469</span> </span><span class="WHIT"> </span><span class="COMM">// to inputted &lt;span></span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT"> </span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT"> </span><span class="NAME">_t.setInputted</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>472</span>
<span class='line'>473</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">to_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">library_namespace.get_style</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">library_namespace.get_style</span><span class="PUNC">(</span><span class="NAME">_p.inputO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'width'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug(to_input);</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: +16, +10: magic number</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT"> </span><span class="COMM">// .get_style(_p.arrowO, 'width') 可能回傳 'auto' @ IE8</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">to_input</span><span class="PUNC">+</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">library_namespace.get_style</span><span class="PUNC">(</span><span class="NAME">_p.arrowO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'width'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">library_namespace.get_style</span><span class="PUNC">(</span><span class="NAME">_p.inputO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'height'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: handle exception</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>485</span>
<span class='line'>486</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_p.inputO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">_p.inputtedO.innerHTML</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.innerHTML</span><span class="PUNC">=</span><span class="STRN">'&nbsp;'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span>
<span class='line'>490</span> </span><span class="WHIT"> </span><span class="COMM">//_p.inputtedO.style.border = '3px #aaa dotted';</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">to_input</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'inline-block'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'inline'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>493</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>494</span>
<span class='line'>495</span> </span><span class="COMM">// TODO: http://blog.xuite.net/sugopili/computerblog/17695447</span><span class="WHIT">
<span class='line'>496</span> </span><span class="NAME">set_source</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">URL</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>499</span>
<span class='line'>500</span> </span><span class="COMM">/* 配置元件
<span class='line'>501</span>
<span class='line'>502</span> 本函數會配置/增加:
<span class='line'>503</span> &lt;div> .container
<span class='line'>504</span> &lt;input> .inputO
<span class='line'>505</span> &lt;span> .inputtedO
<span class='line'>506</span> &lt;span> .arrowO
<span class='line'>507</span> &lt;div> .listO
<span class='line'>508</span>
<span class='line'>509</span> arguments:
<span class='line'>510</span> &lt;input> 會被當作 inputO 主元件
<span class='line'>511</span> &lt;select> 會被當作選項
<span class='line'>512</span> others: container
<span class='line'>513</span> */</span><span class="WHIT">
<span class='line'>514</span> </span><span class="NAME">layout</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span>
<span class='line'>517</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">!==</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span>
<span class='line'>520</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">hr</span><span class="PUNC">:</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="NAME">br</span><span class="PUNC">:</span><span class="NUMB">1</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// ** 這邊應該檢查 o 是不是 &lt;hr/> 等不能加 child 的!</span><span class="WHIT">
<span class='line'>521</span>
<span class='line'>522</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug(('layout: use &lt;'+o.tagName+(o.id?'#'+o.id:'')+'>: '+o.innerHTML).replace(/&lt;/g,'&lt;'));</span><span class="WHIT">
<span class='line'>523</span>
<span class='line'>524</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: 這邊應該有一個更完善的刪除策略</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.loaded</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">_p.container</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="WHIT"> </span><span class="COMM">// 不必多做功,已經達到所需配置了。</span><span class="WHIT">
<span class='line'>528</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">===</span><span class="NAME">o.parentNode</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">e</span><span class="PUNC">=</span><span class="STRN">'inputO,inputtedO,arrowO,listO'</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">e.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>530</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('layout: removeChild '+e[i]),</span><span class="WHIT">
<span class='line'>531</span> </span><span class="WHIT"> </span><span class="NAME">_p</span><span class="PUNC">[</span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">_p</span><span class="PUNC">[</span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="COMM">//t.removeChild(_p[e[i]]);</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">t.childNodes.length</span><span class="PUNC">)</span><span class="NAME">t.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>534</span>
<span class='line'>535</span>
<span class='line'>536</span> </span><span class="WHIT"> </span><span class="COMM">// 依照各種不同的傳入 object 作出應對</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">o.tagName.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span>
<span class='line'>539</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">===</span><span class="STRN">'input'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>540</span>
<span class='line'>541</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>542</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.w3.org/TR/html5/forms.html#the-pattern-attribute</span><span class="WHIT">
<span class='line'>543</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.whatwg.org/specs/web-apps/current-work/#attr-input-pattern</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.w3school.com.cn/html5/html5_input.asp</span><span class="WHIT">
<span class='line'>545</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">o.pattern</span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT"> </span><span class="COMM">//o.getAttribute&&</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT"> </span><span class="NAME">o.getAttribute</span><span class="PUNC">(</span><span class="STRN">'pattern'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT"> </span><span class="COMM">// compiled as a JavaScript regular expression with the global, ignoreCase, and multiline flags disabled</span><span class="WHIT">
<span class='line'>549</span> </span><span class="WHIT"> </span><span class="COMM">// somewhat as if it implied a ^(?: at the start of the pattern and a )$ at the end</span><span class="WHIT">
<span class='line'>550</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'^('</span><span class="PUNC">+</span><span class="NAME">t</span><span class="PUNC">+</span><span class="STRN">')?$'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>551</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('set verify pattern of ['+o.id+']: '+t),</span><span class="WHIT">
<span class='line'>552</span> </span><span class="WHIT"> </span><span class="NAME">_t.set_verify</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>554</span> </span><span class="WHIT"> </span><span class="NAME">library_namespace.err</span><span class="PUNC">(</span><span class="STRN">'error pattern: ['</span><span class="PUNC">+</span><span class="NAME">t</span><span class="PUNC">+</span><span class="STRN">']'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT"> </span><span class="NAME">library_namespace.err</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>557</span>
<span class='line'>558</span> </span><span class="WHIT"> </span><span class="NAME">o.parentNode.insertBefore</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">_p.container</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO</span><span class="PUNC">=</span><span class="NAME">o</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'container'</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span>
<span class='line'>564</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o.className</span><span class="PUNC">)</span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>565</span>
<span class='line'>566</span> </span><span class="WHIT"> </span><span class="NAME">t.appendChild</span><span class="PUNC">(</span><span class="NAME">o.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span>
<span class='line'>568</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span>
<span class='line'>570</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">===</span><span class="STRN">'select'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT"> </span><span class="NAME">o.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">_p.container</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span>
<span class='line'>573</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">_p.inputO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.name</span><span class="PUNC">=</span><span class="NAME">o.name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o.selectedIndex</span><span class="PUNC">>=</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="NAME">_p.inputO.value</span><span class="PUNC">=</span><span class="NAME">o.options</span><span class="PUNC">[</span><span class="NAME">o.selectedIndex</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span>
<span class='line'>578</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="NAME">opt</span><span class="PUNC">=</span><span class="NAME">o.options</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">opt.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">opt</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">||</span><span class="NAME">opt</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">opt</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>581</span>
<span class='line'>582</span> </span><span class="WHIT"> </span><span class="COMM">// list setting</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT"> </span><span class="NAME">_t.setAllList</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span>
<span class='line'>585</span> </span><span class="WHIT"> </span><span class="NAME">o.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">removeAllChild</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span>
<span class='line'>587</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span>
<span class='line'>589</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT"> </span><span class="NAME">_p.container</span><span class="PUNC">=</span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 容器</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o.className</span><span class="PUNC">)</span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'container'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>592</span>
<span class='line'>593</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>594</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">_p.inputO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span>
<span class='line'>596</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>597</span>
<span class='line'>598</span>
<span class='line'>599</span> </span><span class="WHIT"> </span><span class="COMM">// 補足其他的設定</span><span class="WHIT">
<span class='line'>600</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.setAttribute</span><span class="PUNC">(</span><span class="STRN">"autocomplete"</span><span class="PUNC">,</span><span class="STRN">"off"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>601</span>
<span class='line'>602</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>603</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'inputted'</span><span class="PUNC">,</span><span class="NAME">_p.inputtedO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.style.display</span><span class="PUNC">=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span>
<span class='line'>606</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputtedO.onclick</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT"> </span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>608</span> </span><span class="WHIT"> </span><span class="NAME">_t.triggerToInput</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT"> </span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span>
<span class='line'>613</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_p.arrowO</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">_.textSet.showList</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>614</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">title</span><span class="PUNC">=</span><span class="NAME">_.textSet.arrowTitle</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>615</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'arrow'</span><span class="PUNC">,</span><span class="NAME">_p.arrowO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>616</span>
<span class='line'>617</span> </span><span class="WHIT"> </span><span class="NAME">_p.listO</span><span class="PUNC">=</span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.onmouseover</span><span class="PUNC">=</span><span class="NAME">_p.listO.onmouseover</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.onmouseout</span><span class="PUNC">=</span><span class="NAME">_p.listO.onmouseout</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> </span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="STRN">'list'</span><span class="PUNC">,</span><span class="NAME">_p.listO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT"> </span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>622</span>
<span class='line'>623</span>
<span class='line'>624</span> </span><span class="WHIT"> </span><span class="COMM">// event setting</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT"> </span><span class="COMM">//_p.inputO.onmouseover=</span><span class="WHIT">
<span class='line'>626</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.onkeydown</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">readyTo.call</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.onmouseup</span><span class="PUNC">=</span><span class="NAME">_p.inputO.onkeyup</span><span class="PUNC">=</span><span class="NAME">_p.inputO.ondragend</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">e</span><span class="PUNC">)</span><span class="NAME">e</span><span class="PUNC">=</span><span class="NAME">event</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">e.keyCode</span><span class="PUNC">||</span><span class="NAME">e.which</span><span class="PUNC">||</span><span class="NAME">e.charCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span> </span><span class="WHIT"> </span><span class="COMM">//sl('up: '+e.type+', key: '+c+', _p.listA: '+(_p.listA&&_p.listA.length));</span><span class="WHIT">
<span class='line'>631</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">cK</span><span class="PUNC">&&</span><span class="NAME">cK</span><span class="PUNC">==</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">cK</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT"> </span><span class="COMM">// Esc</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">==</span><span class="NUMB">27</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>634</span> </span><span class="WHIT"> </span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="NAME">_t.onInput</span><span class="PUNC">(</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>635</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.onmouseout</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>637</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_p.inputO.addEventListener</span><span class="PUNC">)</span><span class="NAME">_p.inputO.addEventListener</span><span class="PUNC">(</span><span class="STRN">'dragdrop'</span><span class="PUNC">,</span><span class="NAME">_p.inputO.ondragend</span><span class="PUNC">,</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>638</span> </span><span class="WHIT"> </span><span class="COMM">//if(window.addEventListener)window.addEventListener('click',function(){_t.showList(0);},true);</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT"> </span><span class="COMM">//addListener(0,'click',function(){sl('close..');_t.showList(0);sl('close done.');})</span><span class="WHIT">
<span class='line'>640</span> </span><span class="WHIT"> </span><span class="NAME">_p.inputO.onblur</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT"> </span><span class="COMM">//if(_t.verify(_t.setValue())==2){alert('Wrong input!');return false;} // 這在 Firefox 似乎沒啥效果..</span><span class="WHIT">
<span class='line'>642</span> </span><span class="COMM">/* 設定這項在按 _p.arrowO 的時候會出問題,所以建議在其他地方自訂。
<span class='line'>643</span> if(_t.setValue() && (_t.setValue() in _t.setAllList()))
<span class='line'>644</span> _t.triggerToInput(0);
<span class='line'>645</span> */</span><span class="WHIT">
<span class='line'>646</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: 假如以鍵盤離開,應該也 showList(0);</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('clickNow='+_t.clickNow,1,'_p.inputO.onblur');</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.clickNow</span><span class="PUNC">)</span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>651</span>
<span class='line'>652</span> </span><span class="WHIT"> </span><span class="COMM">// show/hide by press arrow</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.onclick</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT"> </span><span class="COMM">//sl('arrowO.onclick start');</span><span class="WHIT">
<span class='line'>655</span> </span><span class="WHIT"> </span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT"> </span><span class="COMM">// 正在顯示就把他關起來</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT"> </span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>660</span> </span><span class="WHIT"> </span><span class="COMM">// 沒在顯示就把他開起來: setValue 設定完 listonInput 模擬 key-down</span><span class="WHIT">
<span class='line'>661</span> </span><span class="WHIT"> </span><span class="NAME">_t.onInput</span><span class="PUNC">(</span><span class="NAME">_t.setValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT"> </span><span class="NAME">_t.clickNow</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT"> </span><span class="COMM">//sl('arrowO.onclick end');</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT"> </span><span class="COMM">// ondblclick: double click</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT"> </span><span class="COMM">//_p.inputO.ondblclick=function(){_t.onInput(_p.inputO.value,0,1);};</span><span class="WHIT">
<span class='line'>667</span>
<span class='line'>668</span>
<span class='line'>669</span> </span><span class="WHIT"> </span><span class="NAME">_t.loaded</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// isLoaded</span><span class="WHIT">
<span class='line'>670</span>
<span class='line'>671</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>672</span>
<span class='line'>673</span> </span><span class="COMM">// instance constructor ---------------------------</span><span class="WHIT">
<span class='line'>674</span> </span><span class="NAME">instanceL</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>675</span> </span><span class="NAME">initI</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// (HTML object, list: Array or Object)</span><span class="WHIT">
<span class='line'>676</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>677</span> </span><span class="WHIT"> </span><span class="COMM">// objects setting</span><span class="WHIT">
<span class='line'>678</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">!=</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>679</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('Use object ['+o+']'),</span><span class="WHIT">
<span class='line'>680</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">document.getElementById</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>681</span>
<span class='line'>682</span> </span><span class="WHIT"> </span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// also do initial</span><span class="WHIT">
<span class='line'>683</span> </span><span class="WHIT"> </span><span class="NAME">instanceL.push</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// for destructor</span><span class="WHIT">
<span class='line'>684</span>
<span class='line'>685</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>686</span> </span><span class="WHIT"> </span><span class="NAME">layout.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>687</span> </span><span class="COMM">/*
<span class='line'>688</span> else{
<span class='line'>689</span> //throw new Error(1,'Can not get document object'+(o?' ['+o+']':'')+'!');
<span class='line'>690</span> return;
<span class='line'>691</span> }
<span class='line'>692</span> */</span><span class="WHIT">
<span class='line'>693</span>
<span class='line'>694</span> </span><span class="WHIT"> </span><span class="COMM">// list setting</span><span class="WHIT">
<span class='line'>695</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">_t.allListCount</span><span class="PUNC">)</span><span class="NAME">_t.setAllList</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>696</span>
<span class='line'>697</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_p.arrowO</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>698</span> </span><span class="WHIT"> </span><span class="NAME">_p.arrowO.style.display</span><span class="PUNC">=</span><span class="NAME">_t.allListCount</span><span class="PUNC">?</span><span class="STRN">'inline'</span><span class="PUNC">:</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 無 list 的話先不顯示,等有 list 再說。</span><span class="WHIT">
<span class='line'>699</span>
<span class='line'>700</span> </span><span class="WHIT"> </span><span class="COMM">// setup default inputted value</span><span class="WHIT">
<span class='line'>701</span> </span><span class="WHIT"> </span><span class="NAME">_t.dInputted</span><span class="PUNC">=</span><span class="NAME">_t.setValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>702</span>
<span class='line'>703</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>704</span> </span><span class="WHIT"> </span><span class="NAME">_t.setSearch</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>705</span> </span><span class="WHIT"> </span><span class="COMM">//return _t;</span><span class="WHIT">
<span class='line'>706</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>707</span>
<span class='line'>708</span>
<span class='line'>709</span> </span><span class="COMM">//===================================================</span><span class="WHIT">
<span class='line'>710</span>
<span class='line'>711</span> </span><span class="COMM">/*
<span class='line'>712</span>
<span class='line'>713</span> _=this
<span class='line'>714</span>
<span class='line'>715</span> TODO:
<span class='line'>716</span> 浮水印 background-image:url();
<span class='line'>717</span>
<span class='line'>718</span>
<span class='line'>719</span> HISTORY:
<span class='line'>720</span> 2008/7/22 0:38:14 create
<span class='line'>721</span> 7/27 22:55:18 verify()
<span class='line'>722</span> 8/7 21:18:47 attach()
<span class='line'>723</span> */</span><span class="WHIT">
<span class='line'>724</span> </span><span class="COMM">/**
<span class='line'>725</span> * 提供有選單的 input
<span class='line'>726</span> * @class form 的 functions
<span class='line'>727</span> * @see
<span class='line'>728</span> * http://dojocampus.org/explorer/#Dijit_Form%20Controls_Filtering%20Select_Basic
<span class='line'>729</span> */</span><span class="WHIT">
<span class='line'>730</span> </span><span class="NAME">CeL.interact.form.select_input</span><span class="WHIT">
<span class='line'>731</span> </span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">initI.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">load_arguments</span><span class="PUNC">&&</span><span class="NAME">load_arguments.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>732</span>
<span class='line'>733</span> </span><span class="COMM">// (instance private handle) 不要 instance private 的把這函數刪掉即可。</span><span class="WHIT">
<span class='line'>734</span> </span><span class="NAME">_p</span><span class="PUNC">=</span><span class="STRN">'_'</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\./</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>735</span> </span><span class="COMM">// get private variables (instance[,destroy]), init private variables (instance[,access function list[, instance destructor]])</span><span class="WHIT">
<span class='line'>736</span> </span><span class="NAME">pv</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">d</span><span class="PUNC">,</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">V</span><span class="PUNC">,</span><span class="NAME">K</span><span class="PUNC">=</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="STRN">'k'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">arguments.callee.caller</span><span class="PUNC">===</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="STRN">'i'</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="PUNC">(</span><span class="NAME">V</span><span class="PUNC">=</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">K</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">V.O</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">V.L</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="PUNC">(</span><span class="NAME">K</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">V</span><span class="PUNC">=</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">K</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="NAME">i</span><span class="PUNC">===</span><span class="NAME">V.O</span><span class="PUNC">?</span><span class="NAME">d</span><span class="PUNC">?</span><span class="PUNC">(</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">K</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">K</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="NAME">V.L</span><span class="PUNC">:</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>737</span>
<span class='line'>738</span> </span><span class="COMM">// (for inherit) 不要 inherit 的把這段刪掉即可。</span><span class="WHIT">
<span class='line'>739</span> </span><span class="COMM">//(_.clone=arguments.callee).toString=function(){return '[class_template]';};</span><span class="WHIT">
<span class='line'>740</span>
<span class='line'>741</span>
<span class='line'>742</span> </span><span class="COMM">// class destructor ---------------------------</span><span class="WHIT">
<span class='line'>743</span> </span><span class="COMM">/*
<span class='line'>744</span> please call at last (e.g., window.unload)
<span class='line'>745</span>
<span class='line'>746</span> usage:
<span class='line'>747</span> classT=classT.destroy();
<span class='line'>748</span> or if you has something more to do:
<span class='line'>749</span> classT.destroy()&&classT=null;
<span class='line'>750</span> */</span><span class="WHIT">
<span class='line'>751</span>
<span class='line'>752</span> </span><span class="NAME">_.destroy</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">instanceL.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="NAME">instanceL</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">_p</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>753</span>
<span class='line'>754</span> </span><span class="COMM">// (instance private handle, continue)</span><span class="WHIT">
<span class='line'>755</span> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="STRN">'_p=(function(){var '</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'={a:pv,d:_.destroy,c:0,k:"+pv+'</span><span class="PUNC">+</span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'",i:initI};return function(i,d){var f=arguments.callee.caller;if(f==='</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'.a){if(!d)return i in '</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'?'</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'[i]:('</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'[i='</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'.c++]={},i);'</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'[i]={};}if(f==='</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'.d)'</span><span class="PUNC">+</span><span class="NAME">_p</span><span class="PUNC">+</span><span class="STRN">'={};}})();'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>756</span> </span><span class="NAME">_p.toString</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="STRN">''</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>757</span>
<span class='line'>758</span>
<span class='line'>759</span> </span><span class="COMM">/*
<span class='line'>760</span> // 測試是否可用自訂之屬性
<span class='line'>761</span> var o=document.createElement('div');
<span class='line'>762</span> o.setAttribute('testA',2);
<span class='line'>763</span> can_use_special_attribute=o.getAttribute('testA');
<span class='line'>764</span> sl('can_use_special_attribute: '+can_use_special_attribute);
<span class='line'>765</span> */</span><span class="WHIT">
<span class='line'>766</span>
<span class='line'>767</span> </span><span class="COMM">// class public interface ---------------------------</span><span class="WHIT">
<span class='line'>768</span>
<span class='line'>769</span>
<span class='line'>770</span> </span><span class="COMM">// 預設清單最大顯示數</span><span class="WHIT">
<span class='line'>771</span> </span><span class="NAME">_.maxList</span><span class="PUNC">=</span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>772</span>
<span class='line'>773</span>
<span class='line'>774</span> </span><span class="COMM">// searchInList 常用到的函數</span><span class="WHIT">
<span class='line'>775</span> </span><span class="NAME">_.searchFunctionSet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>776</span> </span><span class="WHIT"> </span><span class="NAME">allTheSame</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>777</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>778</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>779</span> </span><span class="WHIT"> </span><span class="NAME">startWith</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>780</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>781</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>782</span> </span><span class="WHIT"> </span><span class="COMM">// 不管大小寫 Whether the case</span><span class="WHIT">
<span class='line'>783</span> </span><span class="WHIT"> </span><span class="NAME">startWithWC</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>784</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k.length</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">k.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>785</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>786</span> </span><span class="WHIT"> </span><span class="NAME">includeKey</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>787</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="NAME">k.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>788</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>789</span> </span><span class="WHIT"> </span><span class="NAME">includeKeyWC</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>790</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>791</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>792</span> </span><span class="WHIT"> </span><span class="NAME">always</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>793</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>794</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>795</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>796</span>
<span class='line'>797</span>
<span class='line'>798</span> </span><span class="COMM">// 預設 className 前有 ~ 的會轉成 prefix</span><span class="WHIT">
<span class='line'>799</span> </span><span class="NAME">_.classNameSet</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>800</span> </span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="PUNC">:</span><span class="STRN">'si_'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">:</span><span class="STRN">'~container'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">:</span><span class="STRN">'~input'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT"> </span><span class="NAME">inputted</span><span class="PUNC">:</span><span class="STRN">'~inputted'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>804</span> </span><span class="WHIT"> </span><span class="NAME">arrow</span><span class="PUNC">:</span><span class="STRN">'~arrow'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>805</span> </span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">:</span><span class="STRN">'~list'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT"> </span><span class="NAME">item</span><span class="PUNC">:</span><span class="STRN">'~item'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT"> </span><span class="NAME">item_select</span><span class="PUNC">:</span><span class="STRN">'~item_select'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>808</span> </span><span class="WHIT"> </span><span class="NAME">functionB</span><span class="PUNC">:</span><span class="STRN">'~function'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>809</span>
<span class='line'>810</span> </span><span class="WHIT"> </span><span class="NAME">functionT</span><span class="PUNC">:</span><span class="STRN">'~functionText'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>811</span> </span><span class="WHIT"> </span><span class="NAME">error</span><span class="PUNC">:</span><span class="STRN">'~error'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>812</span> </span><span class="WHIT"> </span><span class="NAME">warning</span><span class="PUNC">:</span><span class="STRN">'~warning'</span><span class="WHIT">
<span class='line'>813</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>814</span>
<span class='line'>815</span>
<span class='line'>816</span> </span><span class="COMM">// 預設顯示文字</span><span class="WHIT">
<span class='line'>817</span> </span><span class="NAME">_.textSet</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>818</span> </span><span class="WHIT"> </span><span class="NAME">showList</span><span class="PUNC">:</span><span class="STRN">'▼'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// 4 way: [▴▸▾◂]</span><span class="WHIT">
<span class='line'>819</span> </span><span class="WHIT"> </span><span class="NAME">hideList</span><span class="PUNC">:</span><span class="STRN">'▲'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>820</span> </span><span class="WHIT"> </span><span class="NAME">arrowTitle</span><span class="PUNC">:</span><span class="STRN">'trigger list \n切換顯示查詢列表'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>821</span>
<span class='line'>822</span> </span><span class="WHIT"> </span><span class="NAME">allBtn</span><span class="PUNC">:</span><span class="STRN">'全部'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>823</span> </span><span class="WHIT"> </span><span class="NAME">clearBtn</span><span class="PUNC">:</span><span class="STRN">'清除'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT"> </span><span class="NAME">closeBtn</span><span class="PUNC">:</span><span class="STRN">'關閉'</span><span class="COMM">//'×'</span><span class="WHIT">
<span class='line'>825</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>826</span>
<span class='line'>827</span>
<span class='line'>828</span> </span><span class="COMM">// default 欄位驗證 pattern</span><span class="WHIT">
<span class='line'>829</span> </span><span class="COMM">// http://blog.wu-boy.com/2009/06/16/1454/</span><span class="WHIT">
<span class='line'>830</span> </span><span class="COMM">// TODO: ID, Age, 電話, 地址, 性別, ..</span><span class="WHIT">
<span class='line'>831</span> </span><span class="NAME">_.default_verify_pattern</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>832</span> </span><span class="WHIT"> </span><span class="STRN">'|word'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^\w*$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT"> </span><span class="STRN">'word'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^\w+$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>834</span> </span><span class="WHIT"> </span><span class="COMM">// 整數</span><span class="WHIT">
<span class='line'>835</span> </span><span class="WHIT"> </span><span class="STRN">'|integer'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^[+-]?\d*$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT"> </span><span class="STRN">'integer'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^[+-]?\d+$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>837</span> </span><span class="WHIT"> </span><span class="COMM">// 自然數</span><span class="WHIT">
<span class='line'>838</span> </span><span class="WHIT"> </span><span class="STRN">'|natural'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^([1-9]\d*)?$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT"> </span><span class="STRN">'natural'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^[1-9]\d*$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>840</span> </span><span class="WHIT"> </span><span class="COMM">// 十進位小數</span><span class="WHIT">
<span class='line'>841</span> </span><span class="WHIT"> </span><span class="STRN">'|decimal'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^\d*(\.\d+)?$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>842</span> </span><span class="WHIT"> </span><span class="STRN">'decimal'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^(\d+|\d*\.\d+)$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>843</span> </span><span class="WHIT"> </span><span class="COMM">// 數字</span><span class="WHIT">
<span class='line'>844</span> </span><span class="WHIT"> </span><span class="STRN">'|digit'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^\d*$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>845</span> </span><span class="WHIT"> </span><span class="STRN">'digit'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^\d$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>846</span>
<span class='line'>847</span> </span><span class="WHIT"> </span><span class="NAME">IPv4</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}$/</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>848</span>
<span class='line'>849</span> </span><span class="WHIT"> </span><span class="NAME">URI</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">parse_URI</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>850</span>
<span class='line'>851</span> </span><span class="WHIT"> </span><span class="COMM">// RFC 2822</span><span class="WHIT">
<span class='line'>852</span> </span><span class="WHIT"> </span><span class="COMM">// http://regexlib.com/DisplayPatterns.aspx</span><span class="WHIT">
<span class='line'>853</span> </span><span class="WHIT"> </span><span class="COMM">//'RFC2822' : /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/,</span><span class="WHIT">
<span class='line'>854</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.regular-expressions.info/email.html</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT"> </span><span class="COMM">//'email' : /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+([a-z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b$/i,</span><span class="WHIT">
<span class='line'>856</span> </span><span class="WHIT"> </span><span class="NAME">email</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="REGX">/^[a-z0-9+_~-]+(\.[a-z0-9+_~-]+)*@([a-z\d]([a-z\d-]*[a-z\d])?\.)+([a-z]{2}|com|org|net)\b$/i</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>857</span>
<span class='line'>858</span> </span><span class="WHIT"> </span><span class="NAME">any</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">===</span><span class="STRN">''</span><span class="PUNC">?</span><span class="NUMB">2</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>859</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>860</span>
<span class='line'>861</span> </span><span class="NAME">_.prototype</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>862</span> </span><span class="COMM">// 應該盡量把東西放在 classinstance少一點</span><span class="WHIT">
<span class='line'>863</span>
<span class='line'>864</span> </span><span class="COMM">// instance public interface -------------------</span><span class="WHIT">
<span class='line'>865</span>
<span class='line'>866</span>
<span class='line'>867</span> </span><span class="COMM">/* click 事件進行中
<span class='line'>868</span> TODO:
<span class='line'>869</span> 用更好的方法取代
<span class='line'>870</span> */</span><span class="WHIT">
<span class='line'>871</span> </span><span class="NAME">clickNow</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>872</span>
<span class='line'>873</span> </span><span class="COMM">// instance 的 &lt;input>,.. 之 className, override _.classNameSet.input,..</span><span class="WHIT">
<span class='line'>874</span> </span><span class="COMM">//class_input:'~',</span><span class="WHIT">
<span class='line'>875</span> </span><span class="COMM">//class_item:'~',</span><span class="WHIT">
<span class='line'>876</span> </span><span class="COMM">//..</span><span class="WHIT">
<span class='line'>877</span>
<span class='line'>878</span> </span><span class="COMM">//maxList:\d,</span><span class="WHIT">
<span class='line'>879</span>
<span class='line'>880</span> </span><span class="COMM">// 預設清單 height (px)</span><span class="WHIT">
<span class='line'>881</span> </span><span class="NAME">maxListHeight</span><span class="PUNC">:</span><span class="NUMB">200</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>882</span>
<span class='line'>883</span>
<span class='line'>884</span> </span><span class="COMM">// 設定/取得所有可選的 list</span><span class="WHIT">
<span class='line'>885</span> </span><span class="NAME">setAllList</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>886</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">_p.arrowO</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>887</span> </span><span class="WHIT"> </span><span class="NAME">_t.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>888</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">===</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>889</span> </span><span class="WHIT"> </span><span class="NAME">_p.list</span><span class="PUNC">=</span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>890</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">_t.allListCount</span><span class="PUNC">=</span><span class="NAME">l.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 這不準,得用 onList 測試。</span><span class="WHIT">
<span class='line'>891</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="PUNC">{</span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="NAME">_t.allListCount</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>892</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setAllList: Get about '+_t.allListCount+' items.');</span><span class="WHIT">
<span class='line'>893</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>894</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.style</span><span class="PUNC">,</span><span class="PUNC">!</span><span class="NAME">c</span><span class="PUNC">)</span><span class="NAME">s.display</span><span class="PUNC">=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>895</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">_t.autoShowArrow</span><span class="PUNC">)</span><span class="NAME">s.display</span><span class="PUNC">=</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>896</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>897</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_p.list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>898</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>899</span> </span><span class="COMM">// 自動於有 list 時 show arrow無時 hide</span><span class="WHIT">
<span class='line'>900</span> </span><span class="NAME">autoShowArrow</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>901</span>
<span class='line'>902</span> </span><span class="COMM">// 設定要顯現的 list會回傳 list需注意可能被更改</span><span class="WHIT">
<span class='line'>903</span> </span><span class="NAME">setList</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// key</span><span class="WHIT">
<span class='line'>904</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">setList.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>905</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>906</span>
<span class='line'>907</span> </span><span class="NAME">showList</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">show</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>908</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">showList.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>909</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>910</span>
<span class='line'>911</span> </span><span class="COMM">/*
<span class='line'>912</span> showArrow:function(show){
<span class='line'>913</span> var a=pv(this).arrowO.style;
<span class='line'>914</span> if(typeof show!='undefined')a.display=show?'':'none';
<span class='line'>915</span> return a.display;
<span class='line'>916</span> },
<span class='line'>917</span> */</span><span class="WHIT">
<span class='line'>918</span>
<span class='line'>919</span> </span><span class="COMM">// 每次 input 就會被 call 一次。可用 instance.setSearch('includeKey') 簡易設定</span><span class="WHIT">
<span class='line'>920</span> </span><span class="NAME">onInput</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// key</span><span class="WHIT">
<span class='line'>921</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>922</span>
<span class='line'>923</span> </span><span class="COMM">// 設定表單文字欄位的欄位驗證 return 1: warning, 2: error ('Suffering from a pattern mismatch'), string: 將輸入改為回傳值, else OK</span><span class="WHIT">
<span class='line'>924</span> </span><span class="COMM">// 另外可設定 onkeypress(){return true/false;} 來對每一次按鍵作 check。但這不能處理 paste。 http://irw.ncut.edu.tw/peterju/jscript.html#skill</span><span class="WHIT">
<span class='line'>925</span> </span><span class="NAME">verify</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// key</span><span class="WHIT">
<span class='line'>926</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>927</span>
<span class='line'>928</span> </span><span class="NAME">set_verify</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>929</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">_.default_verify_pattern</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>930</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">library_namespace.is_Object</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>931</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NAME">v</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>932</span>
<span class='line'>933</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>934</span> </span><span class="WHIT"> </span><span class="NAME">this.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>935</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v.test</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>936</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>937</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>938</span> </span><span class="WHIT"> </span><span class="NAME">this.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>939</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">v.match</span><span class="PUNC">(</span><span class="REGX">/^(\d*)-(\d*)$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">||</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>940</span> </span><span class="WHIT"> </span><span class="NAME">this.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Function</span><span class="PUNC">(</span><span class="STRN">'k'</span><span class="PUNC">,</span><span class="STRN">'return isNaN(k)'</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">?</span><span class="STRN">'||k&lt;'</span><span class="PUNC">+</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">?</span><span class="STRN">'||k>'</span><span class="PUNC">+</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">' ? 2 : 0;'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>942</span> </span><span class="WHIT"> </span><span class="NAME">library_namespace.err</span><span class="PUNC">(</span><span class="STRN">'error verify condition of ['</span><span class="PUNC">+</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputO.id</span><span class="PUNC">+</span><span class="STRN">']: ['</span><span class="PUNC">+</span><span class="NAME">v</span><span class="PUNC">+</span><span class="STRN">']'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>943</span>
<span class='line'>944</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>945</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>946</span>
<span class='line'>947</span> </span><span class="COMM">// input: (list, index), return [value, title[, key=title||value]]</span><span class="WHIT">
<span class='line'>948</span> </span><span class="NAME">onList</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>949</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">||</span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">l</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">?</span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>950</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>951</span>
<span class='line'>952</span> </span><span class="COMM">// input: (list, index), return value to set as input key</span><span class="WHIT">
<span class='line'>953</span> </span><span class="NAME">onSelect</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>954</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">?</span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>955</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>956</span>
<span class='line'>957</span> </span><span class="COMM">/* searchInList 的減縮版
<span class='line'>958</span> _.searchInList.call(_instance_,'includeKey');
<span class='line'>959</span> eq
<span class='line'>960</span> _instance_.setSearch('includeKey');
<span class='line'>961</span> */</span><span class="WHIT">
<span class='line'>962</span> </span><span class="NAME">setSearch</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>963</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">searchInList.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>964</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>965</span>
<span class='line'>966</span> </span><span class="NAME">setClassName</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>967</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>968</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="NAME">t.class_input</span><span class="PUNC">=</span><span class="NAME">t.class_error</span><span class="PUNC">=</span><span class="NAME">t.class_warning</span><span class="PUNC">=</span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>969</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">!=</span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">t.class_input</span><span class="PUNC">;</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">t.class_error</span><span class="PUNC">;</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">t.class_warning</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>970</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">setClassName.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="STRN">'input'</span><span class="PUNC">,</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputO</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>971</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>972</span>
<span class='line'>973</span>
<span class='line'>974</span> </span><span class="NAME">setProperty</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">,</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>975</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputO</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>976</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setProperty: '+p+'='+i[p]+'→'+v);</span><span class="WHIT">
<span class='line'>977</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">!=</span><span class="STRN">'undefined'</span><span class="PUNC">&&</span><span class="NAME">v</span><span class="PUNC">!=</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">p</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>978</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">[</span><span class="NAME">p</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>979</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>980</span>
<span class='line'>981</span> </span><span class="COMM">// set/get input value</span><span class="WHIT">
<span class='line'>982</span> </span><span class="NAME">setValue</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>983</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">!==</span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>984</span> </span><span class="WHIT"> </span><span class="NAME">this.triggerToInput</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>985</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.log('setValue: '+this.setProperty('value',v));</span><span class="WHIT">
<span class='line'>986</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">=</span><span class="NAME">this.setProperty</span><span class="PUNC">(</span><span class="STRN">'value'</span><span class="PUNC">,</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>987</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.log('setValue: '+v);</span><span class="WHIT">
<span class='line'>988</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: do not use arguments</span><span class="WHIT">
<span class='line'>989</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">arguments.callee.caller</span><span class="PUNC">!==</span><span class="NAME">do_verify</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>990</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.log('setValue: call do_verify('+v+'), list: ['+this.allListCount+']'+this.setAllList()),</span><span class="WHIT">
<span class='line'>991</span> </span><span class="WHIT"> </span><span class="NAME">do_verify.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>992</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>993</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>994</span>
<span class='line'>995</span> </span><span class="COMM">// set inputted value: 轉換成輸入過的 &lt;span> 時,設定其之值。</span><span class="WHIT">
<span class='line'>996</span> </span><span class="NAME">setInputted</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>997</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_p</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">_p.inputO</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>998</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">===</span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="NAME">v</span><span class="PUNC">=</span><span class="NAME">this.dInputted</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// dInputted: default inputted value, =setValue</span><span class="WHIT">
<span class='line'>999</span> </span><span class="WHIT"> </span><span class="NAME">create_DO</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">removeAllChild</span><span class="PUNC">(</span><span class="NAME">_p.inputtedO</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1002</span>
<span class='line'>1003</span> </span><span class="NAME">setMaxLength</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1004</span> </span><span class="WHIT"> </span><span class="COMM">//sl('setMaxLength: set length '+(l>0?l:null));</span><span class="WHIT">
<span class='line'>1005</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.setProperty</span><span class="PUNC">(</span><span class="STRN">'maxLength'</span><span class="PUNC">,</span><span class="NAME">l</span><span class="PUNC">></span><span class="NUMB">0</span><span class="PUNC">?</span><span class="NAME">l</span><span class="PUNC">:</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1006</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1007</span>
<span class='line'>1008</span> </span><span class="NAME">setName</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1009</span> </span><span class="WHIT"> </span><span class="NAME">this.setProperty</span><span class="PUNC">(</span><span class="STRN">'id'</span><span class="PUNC">,</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1010</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.setProperty</span><span class="PUNC">(</span><span class="STRN">'name'</span><span class="PUNC">,</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1011</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1012</span>
<span class='line'>1013</span> </span><span class="NAME">setTitle</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1014</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputtedO.title</span><span class="PUNC">=</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1015</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.setProperty</span><span class="PUNC">(</span><span class="STRN">'title'</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">||</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1016</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1017</span>
<span class='line'>1018</span> </span><span class="COMM">// 切換 inputted span/input</span><span class="WHIT">
<span class='line'>1019</span> </span><span class="NAME">triggerToInput</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1020</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">triggerToInput.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1021</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1022</span>
<span class='line'>1023</span>
<span class='line'>1024</span> </span><span class="COMM">/*
<span class='line'>1025</span> for Unobtrusive JavaScript: 為未啟用JavaScript的情況提供替代方案。
<span class='line'>1026</span> 接上 &lt;input> 或 &lt;select>
<span class='line'>1027</span> */</span><span class="WHIT">
<span class='line'>1028</span> </span><span class="NAME">attach</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// (input or select object)</span><span class="WHIT">
<span class='line'>1029</span> </span><span class="WHIT"> </span><span class="COMM">//sl('attach: '+o);</span><span class="WHIT">
<span class='line'>1030</span> </span><span class="WHIT"> </span><span class="COMM">//o.replaceNode(_p.inputO);</span><span class="WHIT">
<span class='line'>1031</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">layout.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1032</span> </span><span class="WHIT"> </span><span class="NAME">this.setAllList</span><span class="PUNC">(</span><span class="NAME">this.setAllList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1033</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1034</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1035</span>
<span class='line'>1036</span>
<span class='line'>1037</span> </span><span class="COMM">// (focus or blur, 不驅動 onfocus/onblur)</span><span class="WHIT">
<span class='line'>1038</span> </span><span class="NAME">focus</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// ,noE</span><span class="WHIT">
<span class='line'>1039</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inputO</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1040</span> </span><span class="COMM">/*
<span class='line'>1041</span> sl('focus: '+(f?'focus':'blur')+(noE?' and no event':''));
<span class='line'>1042</span> if(f||typeof f==='undefined'){
<span class='line'>1043</span> if(noE)noE=i.onfocus,i.onfocus=null;
<span class='line'>1044</span> i.focus();
<span class='line'>1045</span> //if(noE)i.onfocus=noE;
<span class='line'>1046</span> }else{
<span class='line'>1047</span> if(noE)noE=i.onblur,i.onblur=null;else this.showList(0);
<span class='line'>1048</span> i.blur();
<span class='line'>1049</span> //if(noE)i.onblur=noE;
<span class='line'>1050</span> }
<span class='line'>1051</span> */</span><span class="WHIT">
<span class='line'>1052</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">||</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">===</span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1053</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1054</span> </span><span class="WHIT"> </span><span class="COMM">// @IE5-8 initial: Error @CeL: 2110 [Error] (facility code 10): 控制項不可見、未啟動或無法接受焦點,因此無法將焦點移到控制項上。</span><span class="WHIT">
<span class='line'>1055</span> </span><span class="WHIT"> </span><span class="COMM">// Error @CeL: 2110 [Error] (facility code 10): Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.</span><span class="WHIT">
<span class='line'>1056</span> </span><span class="WHIT"> </span><span class="NAME">i.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1057</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1058</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>1059</span> </span><span class="WHIT"> </span><span class="NAME">this.showList</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1060</span> </span><span class="WHIT"> </span><span class="NAME">i.blur</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1061</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1062</span>
<span class='line'>1063</span>
<span class='line'>1064</span> </span><span class="COMM">// instance destructor ---------------------------</span><span class="WHIT">
<span class='line'>1065</span> </span><span class="COMM">/*
<span class='line'>1066</span> usage:
<span class='line'>1067</span> instance=instance.destroy();
<span class='line'>1068</span> or if you has something more to do:
<span class='line'>1069</span> instance.destroy()&&instance=null;
<span class='line'>1070</span> */</span><span class="WHIT">
<span class='line'>1071</span> </span><span class="NAME">destroy</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1072</span> </span><span class="WHIT"> </span><span class="NAME">pv</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1073</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1074</span>
<span class='line'>1075</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// _.prototype=</span><span class="WHIT">
<span class='line'>1076</span>
<span class='line'>1077</span>
<span class='line'>1078</span> </span><span class="COMM">// ===================================================</span><span class="WHIT">
<span class='line'>1079</span>
<span class='line'>1080</span>
<span class='line'>1081</span> </span><span class="COMM">// prevent re-use. 防止再造 </span><span class="WHIT">
<span class='line'>1082</span> </span><span class="COMM">//delete _.clone;</span><span class="WHIT">
<span class='line'>1083</span>
<span class='line'>1084</span> </span><span class="NAME">_.allow_inherit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1085</span>
<span class='line'>1086</span>
<span class='line'>1087</span>
<span class='line'>1088</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>1089</span> </span><span class="WHIT"> </span><span class="NAME">CeL.interact.form.select_input</span><span class="WHIT">
<span class='line'>1090</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1091</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1092</span>
<span class='line'>1093</span>
<span class='line'>1094</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1095</span>
<span class='line'>1096</span> </span></pre></body></html>