feedback-page.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. (function(mui, window, document, undefined) {
  2. mui.init();
  3. var get = function(id) {
  4. return document.getElementById(id);
  5. };
  6. var qsa = function(sel) {
  7. return [].slice.call(document.querySelectorAll(sel));
  8. };
  9. var ui = {
  10. question: get('question'),
  11. contact: get('contact'),
  12. imageList: get('image-list'),
  13. submit: get('submit')
  14. };
  15. ui.clearForm = function() {
  16. ui.question.value = '';
  17. ui.contact.value = '';
  18. ui.imageList.innerHTML = '';
  19. ui.newPlaceholder();
  20. };
  21. ui.getFileInputArray = function() {
  22. return [].slice.call(ui.imageList.querySelectorAll('input[type="file"]'));
  23. };
  24. ui.getFileInputIdArray = function() {
  25. var fileInputArray = ui.getFileInputArray();
  26. var idArray = [];
  27. fileInputArray.forEach(function(fileInput) {
  28. if (fileInput.value != '') {
  29. idArray.push(fileInput.getAttribute('id'));
  30. }
  31. });
  32. return idArray;
  33. };
  34. var imageIndexIdNum = 0;
  35. ui.newPlaceholder = function() {
  36. var fileInputArray = ui.getFileInputArray();
  37. if (fileInputArray &&
  38. fileInputArray.length > 0 &&
  39. fileInputArray[fileInputArray.length - 1].parentNode.classList.contains('space')) {
  40. return;
  41. }
  42. imageIndexIdNum++;
  43. var placeholder = document.createElement('div');
  44. placeholder.setAttribute('class', 'image-item space');
  45. var closeButton = document.createElement('div');
  46. closeButton.setAttribute('class', 'image-close');
  47. closeButton.innerHTML = 'X';
  48. closeButton.addEventListener('click', function(event) {
  49. event.stopPropagation();
  50. event.cancelBubble = true;
  51. setTimeout(function() {
  52. ui.imageList.removeChild(placeholder);
  53. }, 0);
  54. return false;
  55. }, false);
  56. var fileInput = document.createElement('input');
  57. fileInput.setAttribute('type', 'file');
  58. fileInput.setAttribute('accept', 'image/*');
  59. fileInput.setAttribute('id', 'image-' + imageIndexIdNum);
  60. fileInput.addEventListener('change', function(event) {
  61. var file = fileInput.files[0];
  62. if (file) {
  63. var reader = new FileReader();
  64. reader.onload = function() {
  65. //处理 android 4.1 兼容问题
  66. var base64 = reader.result.split(',')[1];
  67. var dataUrl = 'data:image/png;base64,' + base64;
  68. //
  69. placeholder.style.backgroundImage = 'url(' + dataUrl + ')';
  70. }
  71. reader.readAsDataURL(file);
  72. placeholder.classList.remove('space');
  73. ui.newPlaceholder();
  74. }
  75. }, false);
  76. placeholder.appendChild(closeButton);
  77. placeholder.appendChild(fileInput);
  78. ui.imageList.appendChild(placeholder);
  79. };
  80. ui.newPlaceholder();
  81. ui.submit.addEventListener('tap', function(event) {
  82. if (ui.question.value == '' ||
  83. (ui.contact.value != '' &&
  84. ui.contact.value.search(/^(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)|([1-9]\d{4,9})$/) != 0)) {
  85. return mui.toast('信息填写不符合规范');
  86. }
  87. plus.nativeUI.showWaiting();
  88. feedback.send({
  89. question: ui.question.value,
  90. contact: ui.contact.value,
  91. images: ui.getFileInputIdArray()
  92. }, function() {
  93. plus.nativeUI.closeWaiting();
  94. mui.toast('感谢您的建议~');
  95. ui.clearForm();
  96. mui.back();
  97. });
  98. }, false);
  99. })(mui, window, document, undefined);