onChange on复选框没有响应

时间:2018-05-19 14:48:37

标签: javascript twitter-bootstrap reactjs checkbox twitter-bootstrap-3

好的,在决定发布这个问题之前,我经常搜索并尝试了很多东西,所以这就是我的情况

<div className="btn-group" data-toggle="buttons">
 <label htmlFor="test" className="btn win-checkbox-btn" onClick={e => e.stopPropagation()}>
  <input id="test" autoComplete="off" className="taggable" type="checkbox" name="test" onChange={(e) => { console.log(e) }} />
 someText
 </label>
 <input autoComplete="off" className="taggable" type="checkbox" name="test2" onChange={(e) => { console.log(e) }} />
</div>

所以这里发生的是第一个复选框上的onChange函数(标签内部的名称为test)根本不会触发,但第二个复选框(test2)上的onChange函数正常触发。我在标签内需要它,因为我使用Bootstrap checkbox buttons。所以我使用bootstrap 3.3.7并做出反应15.6.0。 更多的信息是使用标签上的htmlFor属性或删除它不会影响任何东西,我在标签上使用的onClick处理程序是我在搜索时找到的解决方案,但也没有#&#完全没有帮助,删除或添加它并不会影响任何事情。

这里的任何线索确实会有所帮助,在此先感谢。

1 个答案:

答案 0 :(得分:0)

您的复选框不应位于label标签内,因为label标签会处理代码中的click事件。你需要在标签上的所有这个onclick事件“onClick = {e =&gt; e.stopPropagation()}”吗?

您可以尝试使用以下代码: <label htmlFor="test" >someText </label> <input id="test" autoComplete="off" type="checkbox" name="test" onChange={(e) => { console.log(e) }} />