num-alignment.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. (function($){
  2. var functions = {
  3. init:function(input, step, max, min, digit){
  4. var width = input.width()-3;
  5. var height = input.width()/4;
  6. var _this = this;
  7. width += 3;
  8. input.attr("readonly", "readonly");
  9. //设置不分样式
  10. input.css("border", "none");
  11. input.css("width", width-height*2-2);
  12. input.css("height", height);
  13. input.css("padding", "0px");
  14. input.css("margin", "0px");
  15. input.css("text-align", "center");
  16. input.css("vertical-align", "middle");
  17. input.css("line-height", height + "px");
  18. //添加左右加减号
  19. input.wrap("<div style = 'overflow:hidden;width:" + width + "px;height:" + height + "px;border: 1px solid #DDD;'></div>");
  20. input.before("<div id = '" + input.attr('id') + "l' onselectstart = 'return false;' style = '-moz-user-select:none;cursor:pointer;text-align:center;width:" + height + "px;height:" + height + "px;line-height:" + height + "px;border-right: 1px solid #DDD;float:left;color:#666;'>-</div>");
  21. input.after("<div id = '" + input.attr('id') + "r' onselectstart = 'return false;' style = '-moz-user-select:none;cursor:pointer;text-align:center;width:" + height + "px;height:" + height + "px;line-height:" + height + "px;border-left: 1px solid #CCC;float:right;color:#666;'> + </div>");
  22. //左右调用执行
  23. $("#" + input.attr('id') + "l").click(function(){
  24. _this.execute(input, step, max, min, digit, true);
  25. });
  26. $("#" + input.attr('id') + "r").click(function(){
  27. _this.execute(input, step, max, min, digit, false);
  28. });
  29. },
  30. execute:function(input, step, max, min, digit, _do){
  31. var val = parseFloat(this.format(input.val(), digit));
  32. var ori = val;
  33. if(_do) val -= step;
  34. if(!_do) val += step;
  35. if(val<min){
  36. val = min;
  37. }else if(val>max){
  38. val = max;
  39. }
  40. input.val(this.format(val, digit));
  41. },
  42. format:function(val, digit){
  43. if(isNaN(val)){
  44. val = 0;
  45. }
  46. return parseFloat(val).toFixed(digit);
  47. }
  48. };
  49. $(function(){
  50. //使用控件必须有以下属性或者引用alignment类
  51. var inputs = $("input[user_data], input[data_digit], input[data_step], input[data_min], input[data_max], input.alignment");
  52. inputs.each(function(){
  53. //预设值数据选择
  54. var data = {
  55. default_data : {"step" : 1, "min" : 0, "max" : 99, "digit" : 1},
  56. aaa : {"step" : 0.5, "min" : 5, "max" : 20, "digit" : 1},
  57. }
  58. var user_data = eval("data." + $(this).attr("user_data"));
  59. if(user_data == null){
  60. user_data = data.default_data;
  61. }
  62. var digit = $(this).attr("data_digit");
  63. if(digit != null&&!isNaN(parseFloat(digit))){
  64. digit = parseFloat(digit).toFixed(0);
  65. user_data.digit = parseFloat(digit);
  66. }
  67. var step = $(this).attr("data_step");
  68. if(step != null &&!isNaN(parseFloat(step))){
  69. user_data.step = parseFloat(step);
  70. }
  71. var min = $(this).attr("data_min");
  72. if(min != null &&!isNaN(parseFloat(min))){
  73. user_data.min = parseFloat(min);
  74. }
  75. var max = $(this).attr("data_max");
  76. if(max != null &&!isNaN(parseFloat(max))){
  77. user_data.max = parseFloat(max);
  78. }
  79. //自动装载
  80. functions.init($(this), user_data.step, user_data.max, user_data.min, user_data.digit);
  81. var data_edit = $(this).attr("data_edit");
  82. if(data_edit){
  83. $(this).attr("readonly",null);
  84. }
  85. });
  86. })
  87. })(jQuery);