form.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. Component({
  2. data: {
  3. showTopTips: false,
  4. radioItems: [
  5. {name: 'cell standard', value: '0', checked: true},
  6. {name: 'cell standard', value: '1'}
  7. ],
  8. checkboxItems: [
  9. {name: 'standard is dealt for u.', value: '0', checked: true},
  10. {name: 'standard is dealicient for u.', value: '1'}
  11. ],
  12. items: [
  13. {name: 'USA', value: '美国'},
  14. {name: 'CHN', value: '中国', checked: 'true'},
  15. {name: 'BRA', value: '巴西'},
  16. {name: 'JPN', value: '日本'},
  17. {name: 'ENG', value: '英国'},
  18. {name: 'TUR', value: '法国'},
  19. ],
  20. date: "2016-09-01",
  21. time: "12:01",
  22. countryCodes: ["+86", "+80", "+84", "+87"],
  23. countryCodeIndex: 0,
  24. countries: ["中国", "美国", "英国"],
  25. countryIndex: 0,
  26. accounts: ["微信号", "QQ", "Email"],
  27. accountIndex: 0,
  28. isAgree: false,
  29. formData: {
  30. },
  31. rules: [{
  32. name: 'radio',
  33. rules: {required: false, message: '单选列表是必选项'},
  34. }, {
  35. name: 'checkbox',
  36. rules: {required: true, message: '多选列表是必选项'},
  37. }, {
  38. name: 'name',
  39. rules: {required: true, message: '请输入姓名'},
  40. }, {
  41. name: 'qq',
  42. rules: {required: true, message: 'qq必填'},
  43. }, {
  44. name: 'mobile',
  45. rules: [{required: true, message: 'mobile必填'}, {mobile: true, message: 'mobile格式不对'}],
  46. }, {
  47. name: 'vcode',
  48. rules: {required: true, message: '验证码必填'},
  49. }, {
  50. name: 'idcard',
  51. rules: {validator: function(rule, value, param, modeels) {
  52. if (!value || value.length !== 18) {
  53. return 'idcard格式不正确'
  54. }
  55. }},
  56. }]
  57. },
  58. methods: {
  59. radioChange: function (e) {
  60. console.log('radio发生change事件,携带value值为:', e.detail.value);
  61. var radioItems = this.data.radioItems;
  62. for (var i = 0, len = radioItems.length; i < len; ++i) {
  63. radioItems[i].checked = radioItems[i].value == e.detail.value;
  64. }
  65. this.setData({
  66. radioItems: radioItems,
  67. [`formData.radio`]: e.detail.value
  68. });
  69. },
  70. checkboxChange: function (e) {
  71. console.log('checkbox发生change事件,携带value值为:', e.detail.value);
  72. var checkboxItems = this.data.checkboxItems, values = e.detail.value;
  73. for (var i = 0, lenI = checkboxItems.length; i < lenI; ++i) {
  74. checkboxItems[i].checked = false;
  75. for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
  76. if(checkboxItems[i].value == values[j]){
  77. checkboxItems[i].checked = true;
  78. break;
  79. }
  80. }
  81. }
  82. this.setData({
  83. checkboxItems: checkboxItems,
  84. [`formData.checkbox`]: e.detail.value
  85. });
  86. },
  87. bindDateChange: function (e) {
  88. this.setData({
  89. date: e.detail.value,
  90. [`formData.date`]: e.detail.value
  91. })
  92. },
  93. formInputChange(e) {
  94. const {field} = e.currentTarget.dataset
  95. this.setData({
  96. [`formData.${field}`]: e.detail.value
  97. })
  98. },
  99. bindTimeChange: function (e) {
  100. this.setData({
  101. time: e.detail.value
  102. })
  103. },
  104. bindCountryCodeChange: function(e){
  105. console.log('picker country code 发生选择改变,携带值为', e.detail.value);
  106. this.setData({
  107. countryCodeIndex: e.detail.value
  108. })
  109. },
  110. bindCountryChange: function(e) {
  111. console.log('picker country 发生选择改变,携带值为', e.detail.value);
  112. this.setData({
  113. countryIndex: e.detail.value
  114. })
  115. },
  116. bindAccountChange: function(e) {
  117. console.log('picker account 发生选择改变,携带值为', e.detail.value);
  118. this.setData({
  119. accountIndex: e.detail.value
  120. })
  121. },
  122. bindAgreeChange: function (e) {
  123. this.setData({
  124. isAgree: !!e.detail.value.length
  125. });
  126. },
  127. submitForm() {
  128. this.selectComponent('#form').validate((valid, errors) => {
  129. console.log('valid', valid, errors)
  130. if (!valid) {
  131. const firstError = Object.keys(errors)
  132. if (firstError.length) {
  133. this.setData({
  134. error: errors[firstError[0]].message
  135. })
  136. }
  137. } else {
  138. wx.showToast({
  139. title: '校验通过'
  140. })
  141. }
  142. })
  143. // this.selectComponent('#form').validateField('mobile', (valid, errors) => {
  144. // console.log('valid', valid, errors)
  145. // })
  146. }
  147. }
  148. });