label下button的触发问题?

木头是猫 2011-12-06 12:26:40
<label>
<button type="button" id="a" name="a" onclick="alert(1)">11111111111111</button>
<button type="button" id="b" name="b" onclick="alert(2)">22222222222222</button>
<button type="button" id="c" name="c" onclick="alert(3)">33333333333333</button>
</label>


在IE6~8中,点击任意button都可以正常触发

但在IE9/Chrome中,点击b(或c)都会先触发b(或c),接着触发a

在不能去掉label的情况下,如何让触发事件正常化,点b只触发b,而不会触发a
...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
峭沙 2011-12-06
  • 打赏
  • 举报
回复
这是因为3个按钮都放在label里面,当你在点击按钮的同时,也点击了label,而label的特性就是被点击的时候,会解发其子元素中的第一个表单元素的点击事件。
	<label onclick="return false;">
<button type="button" id="a" name="a" onclick="alert(1)">11111111111111</button>
<button type="button" id="b" name="b" onclick="alert(2)">22222222222222</button>
<button type="button" id="c" name="c" onclick="alert(3)">33333333333333</button>
</label>
MuBeiBei 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq307023807 的回复:]

为什么for里什么也不写也行 for='asdfasdfasdf'也行
[/Quote]

火狐谷歌如果不写for默认绑定第一个。

所以才有楼主的问题。

加上个页面没有定义的id就行了~·随便写什么都行,只要不跟input的id一样就OK了~·
qq307023807 2011-12-06
  • 打赏
  • 举报
回复
为什么for里什么也不写也行 for='asdfasdfasdf'也行
MuBeiBei 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 legend1988 的回复:]

学习了。请问这个是事件冒泡才会出现楼主的问题吗?但是采用了一下stopPropagation和cancelBubble也还不行,貌似又说明了这个不是事件冒泡导致的问题?
引用 1 楼 mubeibei 的回复:

HTML code
<label for="noid">
<button type="button" id="a" name="a" onclick="alert(1)">1……
[/Quote]

label有个for属性,可以指定id,来控制~·

具体可以去查查。

这不是冒泡~·

label如果不指定for的话,默认是绑定第一个~·各浏览器处理不一样~·
Legend1988 2011-12-06
  • 打赏
  • 举报
回复
学习了。请问这个是事件冒泡才会出现楼主的问题吗?但是采用了一下stopPropagation和cancelBubble也还不行,貌似又说明了这个不是事件冒泡导致的问题?
[Quote=引用 1 楼 mubeibei 的回复:]

HTML code
<label for="noid">
<button type="button" id="a" name="a" onclick="alert(1)">11111111111111</button>
<button type="button" id="b" name="b" onclick="alert(2)">22222222222222</button>
<button……
[/Quote]
MuBeiBei 2011-12-06
  • 打赏
  • 举报
回复
<label for="noid">
<button type="button" id="a" name="a" onclick="alert(1)">11111111111111</button>
<button type="button" id="b" name="b" onclick="alert(2)">22222222222222</button>
<button type="button" id="c" name="c" onclick="alert(3)">33333333333333</button>
</label>


给label上定义一个for属性,然后里面的值是,页面上没有对应id的控件就行了~·

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧