2013-05-27 30 views
3

日期选择器我有以下<sj:datepicker>停止SJ:从打开的Struts2

<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(); 

但似乎没有任何工作。

+0

AFAIK当前版本的struts2-jquery-plugin没有简单的方法来实现这一点。等待更新或使用普通的jQuery。 –

+0

更新不是我的项目中的解决方案?我找到一种方法:如果我故意造成错误,例如调用一个不存在的方法event.callNonExistingMethode();那么传播就会停止,但这不是一个好的解决方案。其他解决方案? – kozla13

回答

0

不要使用event.stopImmediatePropagation();仅仅利用stopImmediatePropagation();

试试这个

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

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

警戒线将不会执行。

另外不要忘记在您的< sj:datepicker ... />中使用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" 
/>