Как найти input с пустым value и добавить к нему класс при нажатии на кнопку?
Подскажите, пожалуйста, как правильно искать input с пустым value, если они создаются динамически и через перебор массива?
Например, добавить css класс .error при нажатии на кнопку Проверить
Сделал проверку на пустые input c помощью функции onChange, но интересно, как сделать добавление css классов при нажатии на кнопку проверить?
Песочница:
https://codesandbox.io/s/frosty-currying-3gtrmz?file=/src/App.js
app.js
export default function App() {
const [arrayInputs, setMyArray] = useState([
{ name: "Input 1", value: 1 },
{ name: "Input 2", value: 2 },
{ name: "Input 3", value: 3 }
]);
// Добавление нового Input
const addInput = () => {
const newArray = [
...arrayInputs,
{
name: `Input ${arrayInputs.length + 1}`,
value: arrayInputs.length + 1
}
];
setMyArray(newArray);
};
// Проверка всех Input
const valid = (e) => {
console.log(e);
};
return (
<div className="App">
{arrayInputs.map((e) => {
return (
<div key={e.name}>
<span>{e.name}: </span>
<input
defaultValue={e.value}
onInput={(e) => {
if (e.target.value.length < 1) {
e.target.classList.add("error");
} else {
e.target.classList.remove("error");
}
}}
/>
<input
defaultValue={e.value}
onInput={(e) => {
if (e.target.value.length < 1) {
e.target.classList.add("error");
} else {
e.target.classList.remove("error");
}
}}
/>
</div>
);
})}
<button onClick={addInput}>Добавить</button>
<button onClick={valid}>Проверить пустые</button>
</div>
);
}
Источник: Stack Overflow на русском