java - 通过 Jquery 从 Datebox 中清除日期

标签 java jquery zk

下面的代码在日期框模式弹出窗口中显示一个按钮,但我想清除单击该按钮时的日期。我尝试了很多东西,但无法通过 jQuery 方法做到这一点。

 <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>

最佳答案

在您的情况下,清除按钮是 datebox 的子 dom,但不是子 widget,this.parent.$n() 仅当按钮是 datebox 的子 widget 时才有效。

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

  1. 从弹出日历中获取日期框的 id(该 id 为日期框 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>

关于java - 通过 Jquery 从 Datebox 中清除日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309439/

相关文章:

java - 如何为我们的系统提供API

javascript - 通过 PHP 进行条件 AJAX 发布

javascript - Chrome 中的 JQuery 绑定(bind)卸载事件

java - html5和ZK中的特殊字符

java - 如何在zk框架中的列表框的列表项上获取拖/放事件

java - 具有并行性的 ForkJoinPool 构造函数

java - 从命令行构建 IntelliJ Artifact

java - 在ZK中,从其他ViewModel更改组件的属性

java - 我在任何 Spring 组件中获得哪个 EntityManager 副本?

jquery - 在代码中提及什么 jQuery 版本