2014-01-23 26 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

相关问题