如何在intbox中过滤粘贴的值?

时间:2018-01-05 13:00:05

标签: java zk

我有一个在粘贴时接受任何文本值的intbox。我不想在此intbox中禁用control + c值,那么如何才能将其粘贴到regect char值?

一些代码:

<intbox mold="rounded" id="intbxNumeroDaConta" width="90px" />

一些图片:

intbox

intbox with pasted value

1 个答案:

答案 0 :(得分:0)

如果粘贴非数字文本,则在模糊焦点时应看到验证错误框。这将暗示用户修改其价值。

以下解决方案适用于chrome,firefox,IE 11或更高版本

<zk xmlns:h="client/attribute">
avoid pasting non-number characters
    <intbox h:onPaste="preventPastingNonDigital(event)" />
<script><![CDATA[
function preventPastingNonDigital(e){
    var pastedText = e.clipboardData ? e.clipboardData.getData('text') //chrome, firefox
     : window.clipboardData.getData('text'); //ie11

    if (!new RegExp('^[0-9]+$').test(pastedText)){
        e.preventDefault();
    }
}
]]></script>
</zk>

REF: https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/getData

对于较旧的IE,他们不支持onPaste,因此请参阅JavaScript get clipboard data on paste event (Cross browser)