避免在RichFaces数据表中单击outputLink时发生onRowClick事件
Avoid onRowClick event when outputLink is clicked inside of RichFaces datatable
如何避免在具有outputlink(目标到新窗口)的列上的数据表上调用onRowClick
?
<rich:dataTable id="dt" value="#{bean.cars} var="_car">
<a:support event="onRowClick" action="#{action.navigateToCarDetails(_car.id)}"/>
<rich:column>
<f:facet name="header">Select</f:facet>
<a:commandLink onclick="Event.stop(event)" action="#{bean.toggleSelectedCar(_car.id)}" reRender="dt" ajaxSingle="true" limitToList="true">
<h:graphicImage value="/img/icon_checkbox_#{bean.isCarSelected(_car.id) ? 'active' : 'inactive'}.gif"/>
</a:commandLink>
</rich:column>
<rich:column>
<f:facet name="header">Brand</f:facet>
<h:outputLink value="#{_car.link}" target="_blank">
<h:outputText value="#{_car.brand}"/>
</h:outputLink>
</rich:column>
<rich:column>
<f:facet name="header">Year</f:facet>
<h:outputText value="#{_car.year}"/>
</rich:column>
<rich:column>
<f:facet name="header">Color</f:facet>
<h:outputText value="#{_car.color}"/>
</rich:column>
</rich:dataTable>
在上面的示例中,当我单击行时,它将导航到包含汽车详细信息的页面。
当单击Select列的行时,它将更新所选的汽车,并相应地更新复选框图标,但不导航到汽车详细信息页面,因为我有onclick="Event.stop(event)"
。
但是,当我单击outputLink框时,除了打开一个新窗口并显示制造商web页面外,它还将原始页面更新为汽车详细信息。我如何防止这种情况发生?(我尝试添加onclick
事件停止,就像选择列,但除了停止onrowclick
事件,它还阻止链接到制造商的网页)
Event.stop(event)
的基本功能如下:
'' stops the event from bubbling up the event chain
event.stopPropagation();
'' prevents the default action the browser makes on that event
event.preventDefault();
在你的情况下,你只是想防止冒泡,所以一个方法是:
onclick="event.stopPropagation()"
您应该能够这样做:
<rich:dataTable
onRowClick="if (event.target.id.endsWith('columnId')) return false;" …>
onRowClick函数在a4j:support
之前执行,因此如果您返回false,则不会调用该操作。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- 避免在rich:dataTable的某一列中出现onRowClick事件
- 避免在RichFaces数据表中单击outputLink时发生onRowClick事件