2013-05-27 29 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" 
/>