正在取消选择控件的onchange事件的传播
Cancelling propagation of the onchange event of a select control
我有一个嵌套在表单元格中的选择控件。包含表单元格的"表"行具有onclick事件。当我单击select控件来更改值时,将触发该行的onclick事件。
我已经尝试在onchange事件上使用stoppropagation方法,但它似乎不起作用。
下面是我的代码
xxxxxxx.Helper.DDGoto = function (o, e) {
e.stopPropagation();
var path = $(o).val();
if (path != null) {
this.Goto(path);
}
}
<tr onclick="somemethod()">
<td>some text</td>
<td>
<select onchange="xxxxxxx.Helper.DDGoto(this, event)">some options</select>
</td>
</tr>
由select
上的onchange
事件触发的事件不是在tr
上触发onclick
事件,它们不属于同一类型。这是两个不同的事件。这也是为什么停止传播onchange
事件不会停止要触发的onclick
事件的原因。
相反,您应该在onclick
处理程序中检查是否单击了select
元素:
somemethod = function (event) {
if (event.target.nodeName === 'SELECT') {
// The select was clicked, stopping...
return;
}
// The select was not clicked, go ahead...
}
要在处理程序中获取事件,您需要将声明更改为:
<tr onclick="somemethod(event)">
我使用了nodeName
属性作为示例,但您也可以使用目标的type
属性或任何其他方法来检测是否单击了选择。
你可以看看这个小提琴作为例子。
当您单击select标记时,onChange和onClick事件都会被触发!我通过在onChange句柄旁边创建一个onClick句柄,然后调用e.stopPropagation()函数来解决这个问题。
为我工作!
<select (click)="StopPropogation($event)" (change)="textureChanged($event,i)" class="form-control" id="sel1">
<option selected="isTextureSolid(nodule.texture)">solid</option>
<option selected="isTexturePartSolid(nodule.texture)">part-solid</option>
<option selected="isTextureNonSolid(nodule.texture)">non-solid</option>
</select>
Javascript代码:
StopPropogation(e: Event) {
e.stopPropagation();
console.log('Click event stopped from propogating');
}
textureChanged(e: Event, i: number) {
e.stopPropagation();
console.log('textTure Changed');
let btnId = 'save' + i.toString();
document.getElementById(btnId).style.display = 'block';
document.getElementById(btnId).style.visibility = 'visible';
}
相关文章:
- Onchange没有'不要显示或隐藏Div
- Javascript Select OnChange没有'不要第二次工作
- onChange不足以从Dojo组合框触发查询
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 如何使用javascript和PHP动态触发onChange事件
- react testUtils模拟点击单选按钮而不触发onchange
- onChange 函数更改表中显示的数据
- Javascript onchange()函数不起作用
- 在Jquery中单击传播失败
- 在表单OnChange中交换数字顺序
- onchange值为select的重载页面
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- Javascript:如何在onChange事件期间更改日期时间值
- Twitter引导程序在下拉列表打开时停止传播
- JavaScript onchange事件未在IIS7中激发
- 选择标记onchange不适用于移动设备
- jQuery body onChange具有多个元素和多个函数
- 如何在jQuery中为asp:textbox生成onchange事件
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 正在取消选择控件的onchange事件的传播