Page 66 - JavaScript修炼之道
P. 66

任务24  在表单中提供动态的帮助tooltip             55


                   把tooltip放在有用的地方


                    form/tooltips/index.html

                   <p>
                     <label for="user_login">
                       Login*
                       <span class="tooltip" style="display: none;">
                         Logins must be unique, at least 3 characters long,
                         and may only use letters, numbers, white space,
                         hyphens, underscores and periods.
                       </span>
                     </label>
                     <input type="text" id="user_login" name="user[login]"
                      class="required text" />
                   </p>

                   设置一致、简明的外观样式

                    form/tooltips/tooltips.css

                   #registration label { float: left; width: 6em; position: relative; zoom: 1; }
                   #registration input.text { width: 14em; }
                   #registration .tooltip {
                     display: block; position: absolute; left: 24em; top: 0;
                     padding: 0.35em 0.5em 0.35em 2em; width: 15em;
                     border: 1px solid silver;
                     color: gray; font-size: 80%;
                     background: #ffc url(lightbulb.png) 0.5em 0.3em no-repeat;
                   }
                   聚焦时显示,失焦时隐藏


                    form/tooltips/tooltips.js

                   document.observe('dom:loaded', function() {
                     var attr = Prototype.Browser.IE ? 'htmlFor' : 'for';
                     function showTooltip() {
                       var tooltip = $$('label['+attr+'="'+this.id+'"] .tooltip').first();
                       tooltip && tooltip.show();
                     }
                     function hideTooltip() {
                       var tooltip = $$('label['+attr+'="'+this.id+'"] .tooltip').first();
                       tooltip && tooltip.hide();
                     }

                     $('registration').getInputs().invoke('observe', 'focus', showTooltip).
                       invoke('observe', 'blur', hideTooltip);
                   });
   61   62   63   64   65   66   67   68   69   70   71