【问题标题】:If check box checked disable other, if unchecked enable all in react如果复选框选中禁用其他,如果未选中启用所有反应
【发布时间】:2019-03-22 00:46:00
【问题描述】:

我陷入了一种情况,我需要禁用除选中的复选框之外的复选框。

复选框是在 API 的帮助下动态创建的,密钥将传递给每个复选框。有没有办法实现上述要求。

谢谢

{this.state.imageinfo.map((image, key) => {
          return(
            <div key={key}>
              <input type="checkbox"
                onClick={(e)=> this.setCoverImage(e,key)}>Cover Image
              <div className="delete-image" onClick={() => this.removeImage(key)}>
                &times;
              </div>
            </div>
          );
        })
      }

【问题讨论】:

  • 在此处添加您的代码

标签: javascript reactjs checkbox disable


【解决方案1】:

您可以让该复选框更改保存在状态中的布尔值,并使所有其他复选框的 disabled 属性等于该状态对象。

【讨论】:

    【解决方案2】:

    使用单选框代替复选框

    复选框的行为是多选,而单选则不是

    如果你想使用复选框:

    setCoverImage(e, key) {
        ...
        this.setState({active: key})
    }
    render() {
        ...
        <input type="checkbox"
                onClick={(e)=> this.setCoverImage(e,key)} checked={this.state.active === key}>
    

    【讨论】:

      【解决方案3】:

      您需要在您所在州设置的数组中设置一个选中的关键字,该关键字是布尔值。每当调用函数时,它将仅在提供键的数组元素中设置检查关键字。数组中的其余选中关键字将被删除。然后您将在您的状态中设置更新的数组。像这样。

      setCoverImage=(key)=>{
      const ItemKeyTobeChecked=key;
      const imageinfoArray=this.state.imageinfo;
      
      for(var i=0;i<imageinfoArray.length;i++){
       if(key===i){
        imageinforArray[key].checked=true;
       } 
       else{
         if(imageinforArray[i].checked){
          delete imageinforArray[i].checked
         }
       }
      }
      this.setState({
      imageinfo:imageinfoArray
      })
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 2020-08-02
        • 2014-01-08
        相关资源
        最近更新 更多