收藏
回答

为什么form表单提交后,并没有自动刷新,有些数据还可以继续使用?

这是我的html,用的是picker选择地址, form将其包含,提交表单时,将数据上传

      <view class="item_msg">收货地址(市)</view>
      <view class="section">
        <picker class="picker" name="id" bindchange="bindChange" value="{{city}}" range="{{cityList}}" range-key="name">
          <view class=" {{code==0 ? '':'hide'}} ">市:{{cityList[city].name}}</view>
          <!-- <view class=" {{code==0 ? 'hide':''}} ">市: {{provinceList.city}}</view> -->
        </picker>
      </view>
    </view>
    <view class="address_msg">
      <view class="item_msg">收货地址(区)</view>
      <view class="section">
        <picker class="picker" name="id" bindchange="bindChangeArea" value="{{area}}" range="{{areaList}}" range-key="name">
          <view class=" {{code==0 ? '':'hide'}} ">区:{{areaList[area].name}}</view>
          <!-- <view class=" {{code==0 ? 'hide':''}} ">区: {{provinceList.area}}</view> -->
        </picker>
      </view>
    </view>
    <view class="address_msg">
      <view class="item_msg">详细地址</view>
      <view class="section">
        <input class="detailed" name='detailed' value="{{provinceList.address}}" />
      </view>

这是js

  bindChange: function(e) {
   var cityName = this.data.cityList[e.detail.value].name
    console.log("城市"+cityName)
    let that = this
    // this.setData({
    //   city: e.detail.value
    // })
    console.log(this.data.cityList[e.detail.value].code)
    let citycode = this.data.cityList[e.detail.value].code
    wx.request({
      url: userUrl + '/api/area/selectAll/' + citycode,
      method: 'GET',
      dataType: 'json',
      responseType: 'text',
      success: function(e) {
        that.setData({
          areaList: e.data.data,
          cityName: e.data.data.name,
          // cityName : that.data.cityList[e.detail.value].name
        })
        console.log(e.data.cityList)
      },
    })
  },



  bindChangeArea: function(e) {
    var areaName = this.data.areaList[e.detail.value].name
    console.log("区" + areaName)
    console.log(this.data.areaList[e.detail.value].code)
    this.setData({
      area: e.detail.value,
     
    })
  },
  switch1Change: function(e) {
    console.log(e.detail.value);
    var radio = e.detail.value;


    if (radio == true) {


      isDefaul = 0


    } else {


      isDefaul = 1


    }
  },   
这里是表单
  formSubmit: function(e) {
    //修改保存,url,路径没改
    var address = e.detail.value.detailed
    console.log('城市' + address)
    var phone = e.detail.value.phone
    if (phone.length > 11 || phone.length < 11) {
      wx.showModal({
        content: '请填写正确的手机号',
      })
    } else if (cityName == 0) {
      wx.showModal({
        content: '请填写收货地址(市)',
      })
    } else if (areaName == 0) {
      wx.showModal({
        content: '请填写收货地址(区)',
      })
    } else if (address == 0) {
      wx.showModal({
        content: '请填写填写详细地址',
      })
    }
      console.log('form发生了submit事件,携带数据为:', provinceName, '和:', cityName);
      wx.request({
        url: userUrl + '/api/userAddress/update/' + id,
        header: {
          "Content-Type": "application/x-www-form-urlencoded",
          "ut": '97835e52d2b8f4d77f00d1b729b48bbd'
        },
        data: {
          contact: e.detail.value.username,
          mobile: phone,
          province: '',
          country: '',
          province: provinceName,
          city: cityName,
          area: areaName,
          address: address,
          zipcode: '',
          isDefault: isDefaul,
        },
        method: "PUT",
        dataType: 'json',
        responseType: 'text',
        success: function(e) {
          wx.navigateBack({
            delta: 1
          })
        },
        fail: function(e) {
          console.log(e);


问题是,当我第一次提交表单保存成功后,表单里的数据并没有失效,当下次提交如果不做选择时,提交的数据还是第一次的,但此时我什么都没有选。

我想问问大佬是什么原因。我觉得应该是var address = e.detail.value.detailed这样的声明有关,但又不知道怎么描述



回答关注问题邀请回答
收藏

2 个回答

  • \
    \
    2020-01-07

    提交之后的函数里面把该请的手动清掉,要不就重载页面

    2020-01-07
    有用
    回复 4
    • Joinson
      Joinson
      2020-01-07
      表单提交以后,我让页面跳转到上一页,这样在点进去input里的内容没有里,我当时以为表单里的数据重置了,后来发现,picker里的数据没变,然后我在提交表单成功之后又做了数据初始化。不知道对不对,见招拆招吧...
      2020-01-07
      回复
    • \
      \
      2020-01-07回复Joinson
      你要想再次进来保留数据就部分数据初始化,灵活一点,哪里不要清哪里;你要是全清提交表单表单之后用redirectTo而不是navigateTo就可以直接全部清除了
      2020-01-07
      回复
    • Joinson
      Joinson
      2020-01-07回复\
      我试了一下,用navigateTo不行,挑转页面后,picker里的数据还在。我觉得问题是在 var areaName = this.data.areaList[e.detail.value].name这个上面,我定义的这个是个全局变量,第一次提交成功以后,数据就存到变量里了,也没刷新。所以还是需要初始化一下
      2020-01-07
      回复
    • \
      \
      2020-01-07回复Joinson
      好吧
      2020-01-07
      回复
  • 老张
    老张
    2020-01-07

    form的reset是重置刷新,并不会自动刷新。

    2020-01-07
    有用
    回复 1
    • Joinson
      Joinson
      2020-01-07
      表单提交以后,我让页面跳转到上一页,这样在点进去input里的内容没有里,我当时以为表单里的数据重置了,后来发现,picker里的数据没变,然后我在提交表单成功之后又做了数据初始化。不知道对不对,见招拆招吧...


      对了,您说的reset,是点了重置按钮以后,数据消失是吗
      2020-01-07
      回复
登录 后发表内容
问题标签