Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. // A hastily thrown-together tool which replaces a field, with the class 'length-field' with a field that allows the user to choose their own units (mm, cm, m, km, in, ft, yd, mi), while saving the result in mm.
  2. // The input group relies on Bootstrap for the layout at present.
  3. // I'd really like to return to this at some point and neaten things up a bit.
  4.  
  5. $('.length-field').each(function(){
  6. var cur_unit = "mm";
  7. var cur_multiplier = 1;
  8. var original_units = {
  9. "mm": 1,
  10. "cm": 10,
  11. "m": 1000,
  12. "km": 1000000,
  13. "dvdr": 0,
  14. "in": 25.4,
  15. "ft": 304.8,
  16. "yd": 914.4,
  17. "mi": 1609344
  18. };
  19.  
  20. var field_id = $(this).attr("id");
  21. var field_name = $(this).attr("name");
  22. $(this).parent().append("<input type=\"hidden\" name=\""+field_name+"\" id=\"hidden-length-field-"+$(this).attr("id")+"\">");
  23. var newfield = "<div class=\"input-group\"><input type=\"text\" class=\"form-control\" id=\"formatted-length\" /><div class=\"input-group-btn\"><button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\" id=\"cur-unit-value\">mm <span class=\"caret\"></span></button><ul class=\"dropdown-menu dropdown-menu-left\" role=\"menu\">";
  24. if ($(this).data("units")) {
  25. var allowed_units = $('.length-field').data("units").split(" ");
  26. var units = {};
  27. $.each(allowed_units, function (key, value) {
  28. units[value] = original_units[value];
  29. });
  30. } else {
  31. var units = original_units;
  32. }
  33. $.each(units, function (key, value) {
  34. if (key === "dvdr") {
  35. newfield += "<li class=\"divider\"></li>";
  36. } else {
  37. newfield += "<li><a href=\"#\" class=\"length-unit-option\" data-multiplier=\"" + value + "\">" + key + "</a></li>";
  38. }
  39. });
  40. newfield += "</ul></div></div>";
  41. $(this).parent().append(newfield);
  42. $(this).remove();
  43. $('#formatted-length').keyup(function () {
  44. if ($(this).val() === "") {
  45. formatted_val = 0;
  46. } else {
  47. formatted_val = parseFloat($(this).val());
  48. }
  49. mmvalue = formatted_val * cur_multiplier;
  50. $("#hidden-length-field-"+field_id).val(Math.round(mmvalue));
  51. $("#hidden-length-field-"+field_id).trigger("change");
  52. });
  53. $('.length-unit-option').click(function () {
  54. event.preventDefault();
  55. $('#cur-unit-value').html($(this).html() + "<span class=\"caret\"></span>");
  56. cur_unit = $(this).html();
  57. cur_multiplier = parseFloat($(this).data("multiplier"));
  58. $('#formatted-length').trigger("keyup");
  59. });
  60. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement