province.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. var defaults = {
  2. s1: 'provid',
  3. s2: 'cityid',
  4. s3: 'areaid',
  5. v1: null,
  6. v2: null,
  7. v3: null
  8. };
  9. var $form;
  10. var form;
  11. var $;
  12. layui.define(['jquery', 'form'], function () {
  13. $ = layui.jquery;
  14. form = layui.form;
  15. $form = $('form');
  16. treeSelect(defaults);
  17. });
  18. function treeSelect(config) {
  19. config.v1 = config.v1 ? config.v1 : 110000;
  20. config.v2 = config.v2 ? config.v2 : 110100;
  21. config.v3 = config.v3 ? config.v3 : 110101;
  22. $.each(threeSelectData, function (k, v) {
  23. appendOptionTo($form.find('select[name=' + config.s1 + ']'), k, v.val, config.v1);
  24. });
  25. form.render();
  26. cityEvent(config);
  27. areaEvent(config);
  28. form.on('select(' + config.s1 + ')', function (data) {
  29. cityEvent(data);
  30. form.on('select(' + config.s2 + ')', function (data) {
  31. areaEvent(data);
  32. });
  33. });
  34. function cityEvent(data) {
  35. $form.find('select[name=' + config.s2 + ']').html("");
  36. config.v1 = data.value ? data.value : config.v1;
  37. $.each(threeSelectData, function (k, v) {
  38. if (v.val == config.v1) {
  39. if (v.items) {
  40. $.each(v.items, function (kt, vt) {
  41. appendOptionTo($form.find('select[name=' + config.s2 + ']'), kt, vt.val, config.v2);
  42. });
  43. }
  44. }
  45. });
  46. form.render();
  47. config.v2 = $('select[name=' + config.s2 + ']').val();
  48. areaEvent(config);
  49. }
  50. function areaEvent(data) {
  51. $form.find('select[name=' + config.s3 + ']').html("");
  52. config.v2 = data.value ? data.value : config.v2;
  53. $.each(threeSelectData, function (k, v) {
  54. if (v.val == config.v1) {
  55. if (v.items) {
  56. $.each(v.items, function (kt, vt) {
  57. if (vt.val == config.v2) {
  58. $.each(vt.items, function (ka, va) {
  59. appendOptionTo($form.find('select[name=' + config.s3 + ']'), ka, va, config.v3);
  60. });
  61. }
  62. });
  63. }
  64. }
  65. });
  66. form.render();
  67. form.on('select(' + config.s3 + ')', function (data) { });
  68. }
  69. function appendOptionTo($o, k, v, d) {
  70. var $opt = $("<option>").text(k).val(v);
  71. if (v == d) { $opt.attr("selected", "selected") }
  72. $opt.appendTo($o);
  73. }
  74. }