如何从ReactJS中的下拉列表中选择一个选项时触发事件。目前我正在使用onChange
,但即使再次选择相同选项,我也需要触发事件。
当前代码:
<select name="select1" onChange={this.onChangeOption}>
<option value='A'>Please select A...</option>
<option value='B'>Please select B...</option>
<option value='C'>Please select C...</option>
<option value='D'>Please select D...</option>
</select>
我甚至尝试将onClick
处理程序添加到选项中,但是在点击选项时不会触发,因为它仅适用于元素。
我知道有一些解决方案使用jquery通过将click事件与option元素绑定,但在React中需要一个解决方案。不想只为这个要求包含jQuery。
答案 0 :(得分:9)
这是一个技巧,但如果您需要使用所有更改触发功能,即使更改了相同的选项,也只需要一个我知道的解决方案 - 使用onClick及其详细信息:
class Select extends React.Component{
onChangeOption(e){
if (e.detail === 0){
console.log(e.target.value);
}
}
render(){
return (
<select name="select1" onClick={this.onChangeOption}>
<option value='A'>Please select A...</option>
<option value='B'>Please select B...</option>
<option value='C'>Please select C...</option>
<option value='D'>Please select D...</option>
</select>
)
}
}
答案 1 :(得分:0)
您可以使用ReactJS提供的onClick事件
来实现此目的<select
name="select1"
onChange={(e) => {
// Do not use onChange method, for your use case
console.log('event value', e.target.value);
console.log('event name', e.target.name);
}}
onClick={(e) => {
// Use onClick method, for your use case
console.log('XX event value', e.target.value);
console.log('XX event name', e.target.name);
}}
>
<option value='A'>Please select A...</option>
<option value='B'>Please select B...</option>
<option value='C'>Please select C...</option>
<option value='D'>Please select D...</option>
</select>
onChange
顾名思义只会在前一个select
值不等于提供给它的新值时触发。但在您的情况下,即使选择了相同的值,您也希望触发更改事件。您需要使用我在上面的代码中演示的onClick
方法。每次单击选择标记时都会触发。
我希望这会有所帮助。 干杯
答案 2 :(得分:0)
希望这会解决您的问题,因为我们在javascript中没有任何缺陷。只是一个解决方案。最好不要用更好的数学运算,每次触发时都会调用回调。
let a = 0; //temporary variable - not requred until its particular
let onChangeOption = ()=>{
a = a+1; //not requred until its particular
if(a%2 == 0){// not requred until its particular
console.log("triggered ")
}
}
<select name="select1" onclick="onChangeOption()">
<option value='A'>Please select A...</option>
<option value='B'>Please select B...</option>
<option value='C'>Please select C...</option>
<option value='D'>Please select D...</option>
</select>