【问题标题】:How to show an input after selecting a select in React js在 React js 中选择选择后如何显示输入
【发布时间】:2021-12-17 06:46:05
【问题描述】:

我正在尝试在选择中选择选项后显示输入字段,但它们仅单独显示

我设法只单独显示每个字段“C”,但是当您选择字段 3 时,会出现“C”1、2 和 3

import React, {useState} from 'react';

function Calculo() {
 
  const [taxa, settaxa] = useState('');
  const [custos, setcustos] = useState('');
  const [FC1, setFC1] = useState('');
  const [FC2, setFC2] = useState('');
  const [FC3, setFC3] = useState('');


const [select,setSelect]= useState();
 
const handleCapacity=(e)=>{
 setSelect(e.target.value);
}
  return (
      <div className=''>
        
              <div className="input">
                <label>n° </label>
              <select value={select} onChange={handleCapacity}>
                    <option >1</option>
                    <option >2</option>
                    <option >3</option>

              </select>
              </div>
            <div className="input">
              <label htmlfor="nome">A =</label>
              <input className="loteecocompra" type="number" id='loteecocompra' required="required"value={taxa} onChange={(e)=> settaxa(e.target.value)}/>
            </div>  
            <div className="input">
              <label htmlfor="nome">B =</label>
              <input className="custodepedido" type="number" id='custodepedido' required="required" value={custos} onChange={(e)=> setcustos(e.target.value)}/>
            </div>  
            {select==="1"&& <div className="input">
              <label htmlfor="nome">C<sub>1</sub> =</label>
              <input className="fluxo1" type="number" id='fluxo1' required="required" value={FC1} onChange={(e)=> setFC1(e.target.value)}/>
            </div>}
            {select==="2"&& <div className="input">
              <label htmlfor="nome">C<sub>1</sub> =</label>
              <input className="fluxo1" type="number" id='fluxo1' required="required" value={FC1} onChange={(e)=> setFC1(e.target.value)}/>
            </div> &&
            <div className="input">
              <label htmlfor="nome">C<sub>2</sub>  =</label>
              <input className="fluxo2" type="number" id='fluxo2' required="required" value={FC2} onChange={(e)=> setFC2(e.target.value)}/>
            </div>}
            {select==="3"&&
            <div className="input">
              <label htmlfor="nome">C<sub>1</sub> =</label>
              <input className="fluxo1" type="number" id='fluxo1' required="required" value={FC1} onChange={(e)=> setFC1(e.target.value)}/>
            </div> &&
            <div className="input">
              <label htmlfor="nome">C<sub>2</sub>  =</label>
              <input className="fluxo2" type="number" id='fluxo2' required="required" value={FC2} onChange={(e)=> setFC2(e.target.value)}/>
            </div>&&
            <div className="input">
              <label htmlfor="nome">C<sub>3</sub>  =</label>
              <input className="fluxo3" type="number" id='fluxo3' required="required" value={FC3} onChange={(e)=> setFC3(e.target.value)}/>
            </div>}

        </div>
    );
}

export default Calculo

我正在尝试在选择中选择选项后显示输入字段,但它们仅单独显示

这是我尝试制作的代码

【问题讨论】:

    标签: reactjs select input


    【解决方案1】:

    检查一下:

    function Calculo() {
      const [taxa, settaxa] = useState("");
      const [custos, setcustos] = useState("");
      const [FC1, setFC1] = useState("");
      const [FC2, setFC2] = useState("");
      const [FC3, setFC3] = useState("");
      const [select, setSelect] = useState([]);
    
      const handleCapacity = (e) => {
        if (!e.target.value) {
          setSelect([]);
          return;
        }
    
        if (select.includes(e.target.value)) {
          setSelect((value) => value.filter((val) => val !== e.target.value));
        } else {
          setSelect((value) => [...value, e.target.value]);
        }
      };
    
      return (
        <div className="">
          <div className="input">
            <label>n° </label>
            <select value={select} onChange={handleCapacity} multiple>
              <option>1</option>
              <option>2</option>
              <option>3</option>
            </select>
          </div>
          <div className="input">
            <label htmlFor="nome">A =</label>
            <input
              className="loteecocompra"
              type="number"
              id="loteecocompra"
              required="required"
              value={taxa}
              onChange={(e) => settaxa(e.target.value)}
            />
          </div>
          <div className="input">
            <label htmlFor="nome">B =</label>
            <input
              className="custodepedido"
              type="number"
              id="custodepedido"
              required="required"
              value={custos}
              onChange={(e) => setcustos(e.target.value)}
            />
          </div>
          {select.includes("1") && (
            <div className="input">
              <label htmlFor="nome">
                C<sub>1</sub> =
              </label>
              <input
                className="fluxo1"
                type="number"
                id="fluxo1"
                required="required"
                value={FC1}
                onChange={(e) => setFC1(e.target.value)}
              />
            </div>
          )}
          {select.includes("2") && (
              <div className="input">
                <label htmlFor="nome">
                  C<sub>1</sub> =
                </label>
                <input
                  className="fluxo1"
                  type="number"
                  id="fluxo1"
                  required="required"
                  value={FC1}
                  onChange={(e) => setFC1(e.target.value)}
                />
              </div>
            ) && (
              <div className="input">
                <label htmlFor="nome">
                  C<sub>2</sub> =
                </label>
                <input
                  className="fluxo2"
                  type="number"
                  id="fluxo2"
                  required="required"
                  value={FC2}
                  onChange={(e) => setFC2(e.target.value)}
                />
              </div>
            )}
          {select.includes("3") && (
              <div className="input">
                <label htmlFor="nome">
                  C<sub>1</sub> =
                </label>
                <input
                  className="fluxo1"
                  type="number"
                  id="fluxo1"
                  required="required"
                  value={FC1}
                  onChange={(e) => setFC1(e.target.value)}
                />
              </div>
            ) && (
              <div className="input">
                <label htmlFor="nome">
                  C<sub>2</sub> =
                </label>
                <input
                  className="fluxo2"
                  type="number"
                  id="fluxo2"
                  required="required"
                  value={FC2}
                  onChange={(e) => setFC2(e.target.value)}
                />
              </div>
            ) && (
              <div className="input">
                <label htmlFor="nome">
                  C<sub>3</sub> =
                </label>
                <input
                  className="fluxo3"
                  type="number"
                  id="fluxo3"
                  required="required"
                  value={FC3}
                  onChange={(e) => setFC3(e.target.value)}
                />
              </div>
            )}
        </div>
      );
    }
    

    【讨论】:

    • 也许我没有很好地解释它,但我想做的是选择1,c1显示。选择 2 时显示 C1 和 C2。选择 3 时显示 C1、C2 和 C3
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2021-07-28
    • 2021-11-07
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多