【问题标题】:Stop sj:datepicker from opening Struts2阻止 sj:datepicker 打开 Struts2
【发布时间】:2013-05-27 09:30:05
【问题描述】:

我关注<sj:datepicker>:

<sj:datepicker
    id="dateFrom_id%{index}"  
    name="billingItems[%{index}].dateFrom" 
    value="%{billingItems[#index].dateFrom}"  
    displayFormat="dd.mm.yy"
    cssClass="customDatePicker" 
    buttonImage="/images/icons/calendar-blue.png"
    parentTheme="css_custom"
    firstDay="1"
    onBeforeTopics="beforeShow"
/>

以及以下beforeShow主题:

$.subscribe('beforeShow', function(event, data) {

    if($(event.originalEvent.input).attr('readonly')){
        // ned to stop event
    }
});

如何阻止事件传播。我试过了:

event.stopPropagation();
event.preventDefault();
event.stopImmediatePropagation();

但似乎没有任何效果。

【问题讨论】:

  • AFAIK 使用当前版本的 struts2-jquery-plugin 实现这一目标并不容易。等待更新或使用普通的 jQuery。
  • 更新不是我项目中的解决方案?我找到了一种方法:如果我故意导致错误,例如调用一个不存在的方法 event.callNonExistingMethode();然后传播停止,但这不是一个好的解决方案。还有其他解决方案吗?

标签: struts2 jquery-ui-datepicker


【解决方案1】:

不要使用event.stopImmediatePropagation();,而只使用stopImmediatePropagation();

试试这个

$.subscribe('beforeShow', function(event, data) {

if($(event.originalEvent.input).attr('readonly')=="readonly"){
     stopImmediatePropagation();
    alert('hi');
}
});

警告行不会执行。

也不要忘记在你的 中使用 readonly="true" 。例如

<sj:datepicker
id="dateFrom_id"  
name="dateFrom" 
value="%{'today'}"
displayFormat="dd.mm.yy"
buttonImage="images/icon/Calendar-Blue.png"
cssClass="customDatePicker" 
firstDay="1"
onBeforeTopics="beforeShow"
readonly="true"
/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 2012-10-30
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多