【问题标题】:Set checkbox to checked based on other inputs values根据其他输入值将复选框设置为选中
【发布时间】:2020-01-05 14:32:21
【问题描述】:

我想将复选框输入设置为检查特定输入是否填充了值,但可以选择将复选框更改为再次取消选中。

业务需求要求如果用户填写了所需的输入,则应将此复选框设置为自动选中,但如果需要,可以将其设置回未选中状态。(用户体验内容)usecase demo

考虑以下代码:

     autoAddFinalEvaluation = () => {
      const {channelValue, evaluationValue, txtValue} = this.state;
      if(channelValue !== null && evaluationValue !== null && txtValue !== '') {
        this.setState({
          checked: true
        })
      } 
    }

我像这样动态更新状态

  autoAddFinalEvaluation = () => {
    const {channelValue, evaluationValue, txtValue} = this.state;
    if(channelValue !== null && evaluationValue !== null && txtValue !== '') {
      this.setState({
        checked: !this.state.checked
      })
    }
  }

现在我可以正常设置复选框,但仍然无法按预期工作,在填充第三个输入(文本区域)时,复选框从 true 切换为 false,反之亦然。

【问题讨论】:

  • 你能说得更具体一点吗?考虑添加更多代码或更好地解释您的需求。
  • 请修改格式
  • @Hurobaki 现在可以了吗?
  • @Abd-AllahEid 有没有办法向我提供你的 React 代码?所以我可以自己测试一下
  • @Hurobaki 感谢您的时间和精力,它现在可以按照以下建议的答案工作

标签: javascript reactjs forms validation user-experience


【解决方案1】:

我认为问题是在取消选中复选框后执行“autoAddFinalEvaluation”,而只有在我们可能称为父字段的输入更改时才应该调用它(输入的字段导致复选框被选中)。

【讨论】:

  • 您的最后一条语句确保问题在于调用的函数超出了要求。
  • 感谢您的时间和精力,正如您所说,我的代码中的问题是 onChange 函数绑定到包含输入的父组件,现在当我独立处理每个输入时,它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2019-10-04
  • 2020-06-25
  • 2017-04-06
  • 1970-01-01
  • 2014-01-06
  • 2013-12-16
相关资源
最近更新 更多