extension.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //************** JQuery extension **************//
  2. (function ($) {
  3. var jqAppend = $.fn.append;
  4. $.fn.append = function () {
  5. // Make a list of arguments that are jQuery objects
  6. var appendages = $.makeArray(arguments).filter(function (arg) {
  7. return arg instanceof $;
  8. });
  9. // Call the actual function
  10. var returnValue = jqAppend.apply(this, arguments);
  11. // Trigger "append" event on all jQuery objects that were appended
  12. for (var i = 0; i < appendages.length; ++i) {
  13. appendages[i].trigger('append');
  14. }
  15. return returnValue;
  16. };
  17. })(jQuery)
  18. jQuery.fn.restrictInput = function () {
  19. return this.each(function () {
  20. var input = $(this);
  21. var restriction = input.attr("data-restriction");
  22. switch (restriction) {
  23. case "numberOnly":
  24. input.keydown(function (event) {
  25. var keyCode = ('which' in event) ? event.which : event.keyCode;
  26. isNumeric = (keyCode >= 48 /* KeyboardEvent.DOM_VK_0 */ && keyCode <= 57 /* KeyboardEvent.DOM_VK_9 */) ||
  27. (keyCode >= 96 /* KeyboardEvent.DOM_VK_NUMPAD0 */ && keyCode <= 105 /* KeyboardEvent.DOM_VK_NUMPAD9 */);
  28. isControlChar = keyCode === 8;
  29. isDecimalChar = keyCode === 188;
  30. modifiers = (event.altKey || event.ctrlKey || event.shiftKey);
  31. if ((!isNumeric && !isControlChar && !isDecimalChar) || modifiers) {
  32. event.preventDefault();
  33. }
  34. });
  35. break;
  36. }
  37. });
  38. };
  39. //************** Array extension **************//
  40. Array.prototype.sum = function () {
  41. var r = 0;
  42. for (var i = 0; i < this.length; i++) {
  43. r += this[i];
  44. }
  45. return r;
  46. };
  47. Array.prototype.avg = function () {
  48. var r = 0;
  49. for (var i = 0; i < this.length; i++) {
  50. r += this[i];
  51. }
  52. return r / this.length;
  53. };
  54. //************** Number extension *************//
  55. Number.prototype.toUntrailingFixed = function (decimalPlaces) {
  56. return (this).toFixed(decimalPlaces).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, '$1');
  57. }