javascript - 文本框中带有 JavaScript 的文件 (ZK)
问题描述
我想将下面的代码移动到一个文件中,这样我就可以在更多的文本框中重复使用它,而无需复制相同的代码,只需将文件的源代码放在文本框标签中。可能吗?谢谢。
<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>
keyDown.js
首先,在您的 webapp 文件夹中创建一个文件:
function customKeyDown(evt) {
console.log('oh hai!');
this.$doKeyDown_(evt);
}
然后你的 zul 变成这样:
<script src="keyDown.js" />
<textbox xmlns:w="client" w:doKeyDown_="customKeyDown" />
如果你想进一步缩短你的文本框定义,你可以引入一个标记 sclass customKeyDown
(或 a custom-attribute
)并使用zk.afterLoad()
andzk.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 - 数据表插件中允许分页时,Jquery查找功能不起作用
- android - Android 10 创建文件意图 - 如何获取 reuslt URI?
- docker - 文件在 docker-compose 中不可见
- angular - 在 Angular 模板表达式中使用函数 Map.prototype.get() 可以吗?
- haskell - Haskell 中的“链接器状态”是什么?
- kubernetes - Kub8s Flink TaskManager 没有重新连接到新的 Jobmanager
- vba - 如何从列而不是日期序列中获取日期值到文本框?
- python - 为什么 `value_counts` 函数会忽略特定值?
- html - 我可以在没有 php 和数据库的服务器上托管 HTML 站点吗?
- node.js - Express.js http响应是否默认返回一个promise