2014-01-23 27 views
2

以下代碼顯示的是datebox模式彈出式窗口中的按鈕,但我希​​望在點擊按鈕時清除日期。我嘗試了很多東西,但無法通過jQuery方法來完成。通過Jquery從Datebox中清除日期

<zk> 
    <script> 
    zk.afterLoad('zul.db', function() { 
    var _xRenderer = {}; 
    zk.override(zul.db.Renderer, _xRenderer, { 
    titleHTML: function (wgt, out, localizedSymbols) { 
    _xRenderer.titleHTML.apply(this, arguments); //call the original method 
    var uuid = wgt.uuid, 
     view = wgt._view, 
     text = wgt.getZclass() + '-ctrler'; 

    if(view == 'day') { 
    out.push('&lt;button id="', uuid, '-today" class="', text, '"', 
    ' onClick="var cal = zk.Widget.$(\'$', wgt.parent.id, '\')._pop; cal._value = null; cal._setTime();"', 
    ' &gt;', ' today', '&lt;/button&gt;'); 
    } 
       out.push('&lt;button id="', uuid, '-clear" class="', text, '"', 
    ' onClick="alert(jq(this.parent.$n()))"', 
    ' &gt;', ' clear', '&lt;/button&gt;'); 
    } 
    }); 
    }); 
    </script> 
    <datebox id="db" ></datebox> 
    </zk> 
+0

只是在下面的鏈接做了一個類似的樣本[http://stackoverflow.com/questions/21274789/zk-customize-calender-popup] [ 1] [1]:http://stackoverflow.com/questions/21274789/zk-customize-calender-popup – benbai123

+0

是datebox沒有這個內置的功能已經超出了我 –

回答

1

在你的情況下,清除按鈕是datebox的孩子DOM而不是一個子物件,this.parent。$ N()如果按鈕datebox的子部件只適用。

您可以修改它,使其如下工作:

  1. 獲取datebox的ID從彈出日曆(其中id爲datebox ID + '-pp')。
  2. 獲取帶ID的日期窗口小部件。
  3. 清除datebox的輸入節點的值,然後調用datebox的updateChange_方法。

我稍微修改您的樣本:

<zk> 
    <script><![CDATA[ 
    zk.afterLoad('zul.db', function() { 
    var _xRenderer = {}; 
    zk.override(zul.db.Renderer, _xRenderer, { 
    titleHTML: function (wgt, out, localizedSymbols) { 
    _xRenderer.titleHTML.apply(this, arguments); //call the original method 
    var uuid = wgt.uuid, 
     view = wgt._view, 
     text = wgt.getZclass() + '-ctrler'; 

    if(view == 'day') { 
    out.push('<button id="', uuid, '-today" class="', text, '"', 
    ' onClick="var cal = zk.Widget.$(\'$', wgt.parent.id, '\')._pop; cal._value = null; cal._setTime();"', 
    ' >', ' today', '</button>'); 
    } 
       out.push('<button id="', uuid, '-clear" class="', text, '"', 
    ' onClick="clearDatebox(this)"', 
    ' >', ' clear', '</button>'); 
    } 
    }); 
    }); 
    function clearDatebox (btn) { 
     var id = jq('.z-datebox-pp')[0].id.replace('-pp', ''), 
      dbx = zk.Widget.$('#' + id); 
     dbx.getInputNode().value = ''; 
     dbx.updateChange_(); 
    } 
    ]]></script> 
    <datebox id="db" ></datebox> 
</zk> 
+0

感謝,但清楚,但當我按下清晰的屁股時不工作在...文本框值不明確 –

+0

它適用於我的ZK 6.5.3在鉻,請參閱http://zkfiddle.org/sample/t2qrl5/1-Clear-datebox – benbai123

+0

@ Benbai:這是工作正常如果在單個頁面中只有一個日期框。如果單個頁面中有多個日期框,則不能正常工作。 就像我從第一個日期框中選擇日期,然後選擇第二個日期框。當我單擊第二個日期框的CLear按鈕時,它清除第一個日期框的值。 – psisodia

1

我上面的鏈接代碼已經修改,然後它的工作。

版本 - ZK 6.5.3

<zk> 
    <script><![CDATA[ 
    zk.afterLoad('zul.db', function() { 
    var _xRenderer = {}; 
    zk.override(zul.db.Renderer, _xRenderer, { 
    titleHTML: function (wgt, out, localizedSymbols) { 
    _xRenderer.titleHTML.apply(this, arguments); //call the original method 
    var uuid = wgt.uuid, 
     view = wgt._view, 
     text = wgt.getZclass() + '-ctrler'; 

    if(view == 'day') { 
    out.push('<button id="', uuid, '-today" class="', text, '"', 
    ' onClick="var cal = zk.Widget.$(\'$', wgt.parent.id, '\')._pop; cal._value = null; cal._setTime();"', 
    ' >', ' today', '</button>'); 
    } 
       out.push('<button id="', uuid, '-clear" class="', text, '"', 
    ' onClick="clearDatebox(this)"', 
    ' >', ' clear', '</button>'); 
    } 
    }); 
    }); 
    function clearDatebox (btn) { 

    var str = btn.id; 
    var res = str.substring(3,4); 

     if(res==0){ 
     var id = jq('.z-datebox-inp')[res].id, 
      dbx = zk.Widget.$('#' + id); 
     dbx.getInputNode().value = ''; 
     dbx.updateChange_(); 
     }else{ 
     var id = jq('.z-datebox-inp')[res/2].id, 
      dbx = zk.Widget.$('#' + id); 
     dbx.getInputNode().value = ''; 
     dbx.updateChange_(); 
     } 
    } 
    ]]></script> 
    <datebox id="db" ></datebox> 
    <datebox id="db1" ></datebox> 
    <datebox id="db2" ></datebox> 
    <datebox id="db3" ></datebox> 
</zk> 

改變這種方法。

function clearDatebox (btn) { 

     var d=jq('.z-datebox-pp').length-1; 
     var id = jq('.z-datebox-pp')[d].id.replace('-pp', ''), 
      dbx = zk.Widget.$('#' + id); 
     dbx.getInputNode().value = ''; 
     dbx.updateChange_(); 
    } 

爲ZK 7.0版代碼在這裏

 <zk> 
     <script><![CDATA[ 
     zk.afterLoad('zul.db', function() { 
     var _xRenderer = {}; 
     zk.override(zul.db.Renderer, _xRenderer, { 
     titleHTML: function (wgt, out, localizedSymbols) { 
     _xRenderer.titleHTML.apply(this, arguments); //call the original method 
     var uuid = wgt.uuid, 
      view = wgt._view, 
      text = wgt.getZclass() + '-ctrler'; 

     if(view == 'day') { 
     out.push('<button id="', uuid, '-today" class="', text, '"', 
     ' onClick="setDatebox(this)"', 
     ' >', ' today', '</button>'); 
     } 
        out.push('<button id="', uuid, '-clear" class="', text, '"', 
     ' onClick="clearDatebox(this)"', 
     ' >', ' clear', '</button>'); 
     } 
     }); 
     }); 
     function clearDatebox (btn) { 

     var str = btn.id; 
     var res = str.substring(3,4); 

      if(res==0){ 
      document.getElementById(jq('.z-datebox-input')[res].id).value=''; 
      }else{ 
      document.getElementById(jq('.z-datebox-input')[res/2].id).value=''; 
      } 
     } 
      function setDatebox (btn) { 
     var today = new Date(); 
     var dd = today.getDate(); 
     var mm = today.getMonth()+1; //January is 0! 

     var yyyy = today.getFullYear(); 
     if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} 
today = mm+'/'+dd+'/'+yyyy; 

      var str = btn.id; 
      var res = str.substring(3,4); 

      if(res==0){ 
      document.getElementById(jq('.z-datebox-input')[res].id).value=today; 
      }else{ 
       document.getElementById(jq('.z-datebox-input')[res/2].id).value=today; 
      } 
     } 

     ]]></script> 
     <datebox id="db" ></datebox> 
     <datebox id="db1" ></datebox> 
     <datebox id="db2" ></datebox> 
     <datebox id="db3" ></datebox> 
    </zk> 
+0

今天按鈕不工作在zk7 –

+0

檢查更新後的代碼爲zk 7 today按鈕 – Himanshu

相關問題