文本框中使用JavaScript的文件(ZK)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本框中使用JavaScript的文件(ZK)相关的知识,希望对你有一定的参考价值。

我想将下面的代码移到一个文件中,这样我就可以在更多的Textbox中重复使用它而无需复制相同的代码,只需将文件的源代码放在Textbox标签中即可。可能吗?谢谢。

<textbox id="TBIdFunc" xmlns:w="client">                                            
  <attribute w:name="doKeyDown_">
    <![CDATA[
      function (evt) {
        var keyCode = event.keyCode;
          if( keyCode == 8 // back space
            || keyCode == 13 // enter
            || keyCode == 16 // enter
            || (keyCode >= 35 && keyCode <= 40) // home, end, arrows
            || keyCode == 46) { // Delete
             this.$doKeyDown_(evt);
          } else if ( !evt.shiftKey &&  // only do without shift key
            (keyCode >= 65 && keyCode <= 90)) {// teclas A-Z   
             this.$doKeyDown_(evt);   
          } else {               
             evt.stop();
             return;
          }
       }
   ]]>
 </attribute>
</textbox>
答案

您可以将该函数提取到js文件中,在zul中加载此文件,然后引用您的方法。让我们简化你的例子:

<textbox xmlns:w="client">                                            
  <attribute w:name="doKeyDown_">
    <![CDATA[
      function (evt) {
        console.log('oh hai!');
        this.$doKeyDown_(evt);
      }
   ]]>
 </attribute>
</textbox>

首先,在webapp文件夹中创建一个文件keyDown.js

function customKeyDown(evt) {
    console.log('oh hai!');
    this.$doKeyDown_(evt);
}

然后你的zul变成了这个:

<script src="keyDown.js" />
<textbox xmlns:w="client" w:doKeyDown_="customKeyDown" />

如果你想进一步缩短你的文本框定义,你可以引入标记sclass customKeyDown(或custom-attribute)并使用zk.afterLoad()zk.override()来覆盖doKeyDown_

zk.afterLoad('zul.inp', function applyCustomKeyDown() {
    var xTextbox = {};
    zk.override(zul.inp.Textbox.prototype, xTextbox , {
        doKeyDown_: function (evt) {
            if (jq(this).is('.customKeyDown')) {
                console.log('oh hai!');
                xTextbox.doKeyDown_.apply(this,arguments); // call original
            } else {
                xTextbox.doKeyDown_.apply(this,arguments); // call original
            }
        }
    });
});

在zul中,您只会应用该sclass:

<textbox sclass="customKeyDown" />

以上是关于文本框中使用JavaScript的文件(ZK)的主要内容,如果未能解决你的问题,请参考以下文章

从网站构建器HTML内容框中,使用javascript从Google电子表格中过滤文本/名称

javascript怎么禁止在文本框中输入?

javascript怎么输入第一个文本框中的数字按钮一下,从第二个文本框内输出代码实现

(ZK 7) 自动填充不绑定我的数据(MVVM 和作曲家)

面试题之请写出用于校验 HTML 文本框中输入的内容全部为数字 的 javascript 代码

Javascript在选择时将值生成到表单文本框中