[英]How to disable a checkbox after executing onChange method?
我希望能夠在選中復選框並執行 onChange 方法后禁用復選框。
我能夠找到一種方法來執行此操作,但是一旦選中多個項目,則只會禁用最近選中的復選框。
disable 方法位於 render 方法之前的組件類中
Disable = id => {
document.getElementById(id).disabled = true;
//another method to execute onchange
};
<span>
<input
type="checkbox"
className="form-check-input"
onChange={this.Disable}
value=""
/>
</span>;
該復選框位於渲染方法內。 用戶檢查復選框需要檢查和禁用它自己
一些注意點:
document.getElementById
id
,如果您只需要id
,請將其作為參數this.handler(id)
演示:
const App = () => { const [checked, setChecked] = React.useState(false); const [status, setStatus] = React.useState(true); const onChangeHandler = () => { setChecked(!checked); setStatus(false); }; return ( <div className="App"> <input type="checkbox" value={checked} disabled={!status} onChange={onChangeHandler} /> </div> ); }; ReactDOM.render(<App />, document.getElementById("root"));
<div id="root"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.12.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.12.0/umd/react-dom.production.min.js"></script>
你應該在 element 上附加id
。
let Disable=(id)=>{ if(id){ document.getElementById(id).disabled = true } }
<span> <input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="one" value=""/> <input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="two" value=""/> <input type="checkbox" className="form-check-input" onChange="Disable(this.id)" id="three" value=""/> </span>
在匿名箭頭函數中傳遞event
並在eventHandler(component method)
接受它作為argument
並使用event.target
在需要訪問調用者的情況下有適當的方法來執行此操作。
class Stack extends Component {
Disable = event => {
event.target.disabled = true;
//another method to execute onChange
};
render() {
return (
<span>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
<input
type="checkbox"
className="form-check-input"
onChange={event => this.Disable(event)}
value=""
/>
</span>
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.