小程序如何只让这个弹出一个提示?

提交数据时如果哪个为空就弹出相应的提示 只想让它弹一个 如果有多个字段为空就只弹最上面那个 这个应该怎么办呢?
微信截图_20191023154335.png

this.data.list.forEach((res) => {
  if(res.content==''){
    wx.showToast({
      title: res.info,
      icon: 'none',
      duration: 2000
    })
  }
})
list:[
      {
        item: '姓名',
        content: '',
        info: '姓名不能为空,长度不超过10个字'
      },
      {
        item: '身份证',
        content: '',
        info: '身份证不能为空'
      },
      {
        item: '联系方式',
        content: '',
        info: '联系方式不能为空'
      },
      {
        item: '原账号',
        content: '',
        info: '原账号不能为空'
      },
      {
        item: '新账号',
        content: '',
        info: '新账号不能为空'
      }
    ]
阅读 2.9k
5 个回答
if(res.content==''){
    wx.showToast({
      title: res.info,
      icon: 'none',
      duration: 2000
    })
    //todo 直接跳出循环
  }

个人建议,你可以尝试的去集成下第三方 UI库,例如 vant,iview 他都有对应的小程序版本

对于这个问题,想到的无非是return跳出循环,但是代码中你用到的是forEach,由于forEach()无法在所有元素都传递给调用的函数之前终止遍历,因此无法使用returnbreak来终止,建议换成for,some,every等其他循环方式来通过return实现

新手上路,请多包涵

if (e.detail.value.user_name == '') {

  wx.showToast({
    title: '输入的姓名不能为空',
    icon: 'none',
    duration: 1500
  })
  return;
}

对于这个问题,想到的无非是return跳出循环

一个一个写判断就可以

你需要的是能够跳出循环,forEach是无法跳出整个循环的,你可以替换为for,every,some

forEach

return [true/false]:跳过本次循环

every

return true: 跳过本次循环
return false:跳出整个循环

some

return true: 跳出整个循环
return false:跳过本次循环

for

continue: 挑过本次循环
break: 跳出整个循环

另外看你的场景是要做校验,可以使用专门的异步校验库,会更加优雅:https://github.com/yiminghe/a...(这个我用的比较多)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题