jQuery UI 实例 – 旋转器(Spinner)
通过向上/向下按钮和箭头键处理,为输入数值增强文本输入功能。
如需了解更多有关 spinner 部件的细节,请查看 API 文档 旋转器部件(Spinner Widget)。
默认功能
默认的旋转器。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 默认功能</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { var spinner = $( \"#spinner\" ).spinner(); $( \"#disable\" ).click(function() { if ( spinner.spinner( \"option\", \"disabled\" ) ) { spinner.spinner( \"enable\" ); } else { spinner.spinner( \"disable\" ); } }); $( \"#destroy\" ).click(function() { if ( spinner.data( \"ui-spinner\" ) ) { spinner.spinner( \"destroy\" ); } else { spinner.spinner(); } }); $( \"#getvalue\" ).click(function() { alert( spinner.spinner( \"value\" ) ); }); $( \"#setvalue\" ).click(function() { spinner.spinner( \"value\", 5 ); }); $( \"button\" ).button(); }); </script> </head> <body> <p> <label for=\"spinner\">选择一个值:</label> <input name=\"value\"> </p> <p> <button>切换禁用/启用</button> <button>切换部件</button> </p> <p> <button>获取值</button> <button>设置值为 5</button> </p> </body> </html>
货币
本实例是一个捐款表格,带有货币选择和数量旋转器。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 货币</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.culture.de-DE.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.culture.ja-JP.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { $( \"#currency\" ).change(function() { $( \"#spinner\" ).spinner( \"option\", \"culture\", $( this ).val() ); }); $( \"#spinner\" ).spinner({ min: 5, max: 2500, step: 25, start: 1000, numberFormat: \"C\" }); }); </script> </head> <body> <p> <label for=\"currency\">要捐款的货币</label> <select name=\"currency\"> <option value=\"en-US\">US $</option> <option value=\"de-DE\">EUR €</option> <option value=\"ja-JP\">YEN ¥</option> </select> </p> <p> <label for=\"spinner\">要捐款的数量:</label> <input name=\"spinner\" value=\"5\"> </p> </body> </html>
小数
本实例是一个小数旋转器。增量设置为 0.01。处理文化变化的代码会读取当前的选择器的值,当改变文化时,会基于新的文化重新设置值的样式。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 小数</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.culture.de-DE.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.culture.ja-JP.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { $( \"#spinner\" ).spinner({ step: 0.01, numberFormat: \"n\" }); $( \"#culture\" ).change(function() { var current = $( \"#spinner\" ).spinner( \"value\" ); Globalize.culture( $(this).val() ); $( \"#spinner\" ).spinner( \"value\", current ); }); }); </script> </head> <body> <p> <label for=\"spinner\">小数旋转器:</label> <input name=\"spinner\" value=\"5.06\"> </p> <p> <label for=\"culture\">选择一种用于格式化的文化:</label> <select> <option value=\"en-EN\" selected=\"selected\">English</option> <option value=\"de-DE\">German</option> <option value=\"ja-JP\">Japanese</option> </select> </p> </body> </html>
地图
谷歌地图集成,使用旋转器来改变纬度和经度。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 地图</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"http://maps.google.com/maps/api/js?sensor=false\"></script> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { function latlong() { return new google.maps.LatLng( $(\"#lat\").val(), $(\"#lng\").val() ); } function position() { map.setCenter( latlong() ); } $( \"#lat, #lng\" ).spinner({ step: .001, change: position, stop: position }); var map = new google.maps.Map( $(\"#map\")[0], { zoom: 8, center: latlong(), mapTypeId: google.maps.MapTypeId.ROADMAP }); }); </script> <style> #map { width:500px; height:500px; } </style> </head> <body> <label for=\"lat\">纬度</label> <input name=\"lat\" value=\"44.797\"> <br> <label for=\"lng\">经度</label> <input name=\"lng\" value=\"-93.278\"> <div></div> </body> </html>
溢出
溢出旋转器限制范围从 -10 到 10。对于 10 以上的值,会溢出到 -10,反之亦然。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 溢出</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { $( \"#spinner\" ).spinner({ spin: function( event, ui ) { if ( ui.value > 10 ) { $( this ).spinner( \"value\", -10 ); return false; } else if ( ui.value < -10 ) { $( this ).spinner( \"value\", 10 ); return false; } } }); }); </script> </head> <body> <p> <label for=\"spinner\">选择一个值:</label> <input name=\"value\"> </p> </body> </html>
时间
一个扩展自旋转器的自定义部件。使用 全球化(Globalization)插件来解析和输出时间戳,带有自定义的 step 和 page 选项。向上/向下光标用于分钟的递增/递减,向上/向下翻页用于小时的递增/递减。
<!doctype html> <html> <head> <meta charset=\"utf-8\"> <title>jQuery UI 旋转器(Spinner) - 时间</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/jquery.mousewheel.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.js\"></script> <script src=\"/static/js/jqueryui/resources/demos/external/globalize.culture.de-DE.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $.widget( \"ui.timespinner\", $.ui.spinner, { options: { // 秒 step: 60 * 1000, // 小时 page: 60 }, _parse: function( value ) { if ( typeof value === \"string\" ) { // 已经是一个时间戳 if ( Number( value ) == value ) { return Number( value ); } return +Globalize.parseDate( value ); } return value; }, _format: function( value ) { return Globalize.format( new Date(value), \"t\" ); } }); $(function() { $( \"#spinner\" ).timespinner(); $( \"#culture\" ).change(function() { var current = $( \"#spinner\" ).timespinner( \"value\" ); Globalize.culture( $(this).val() ); $( \"#spinner\" ).timespinner( \"value\", current ); }); }); </script> </head> <body> <p> <label for=\"spinner\">时间旋转器:</label> <input name=\"spinner\" value=\"08:30 PM\"> </p> <p> <label for=\"culture\">选择一种用于格式化的文化:</label> <select> <option value=\"en-EN\" selected=\"selected\">English</option> <option value=\"de-DE\">German</option> </select> </p> </body> </html>
点我分享笔记