Textarea charCount - 防止用户粘贴

2024-01-20

下面的代码工作正常,只是如果我粘贴一个超过 10 个字符的字符串,它应该只粘贴前 10 个字符。目前还没有这样做,如何防止粘贴超过 10 个字符?

http://jsfiddle.net/qfzkw/2/ http://jsfiddle.net/qfzkw/2/


就像声明的那样,<textarea maxlength="10">适用于少量情况 - 但不适用于all.

很难确定如何阻止用户(例如在 Firefox 中)进入文本区域、选择浏览器菜单Edit然后点击Paste。我真的不知道如何防止这种情况发生。您可以检查 keydown 事件来防止ctrl + v。您可以禁用上下文菜单以禁止右键单击文本区域(尽管恶意用户可以编辑前端 JavaScript,然后重新启用此功能)。

简而言之,没有通用的方法来阻止用户以正确的方式进行粘贴。

然而,你可以破解一个解决方案(当似乎无法继续你真正想要的事情时,这总是我最喜欢的)。我要建议的这种方法取决于您运行的计时器数量。如果您有多个动画计时器,谷歌建议您尝试将它们全部折叠到一个计时单元中,其他计时单元由其他计时单元派生。如果是这种情况,请重构您的计时器。

实现一个全局定时器。实现一个基于该计时器每 25 毫秒运行一次的函数。缓存文本区域的内容。看看这些内容是否发生了变化。

textarea

<textarea id="maintextarea"></textarea>

script

/*init*/
var globalTimer = new Date();
var cachedText = document.getElementById("maintextarea").value;
var iterationCount = 0;

function cacheText() {
    cachedText = document.getElementById("maintextarea").value;
}

function upDateTimer() {
    globalTimer = new Date();
    var timerTimeout = setTimeout('upDateTimer()', 5);
    timeBasedOperations();
}
upDateTimer();

function timeBasedOperations() {
    iterationCount++;//this will allow timing to occur
    //TODO: Add in other timers calls based on global timer
    if (iterationCount % 5) {//every fifth iteration (hence 25ms)
        checkTextArea();
    }
}

function checkTextArea() {
    var currentText = document.getElementById("maintextarea").value;
    var textArea = document.getElementById("maintextarea");
    if (currentText.length > cachedText.length) {
        //TODO: Add additional logic for catching a paste or text change
        textArea.value = currentText.substr(0, 10);
    }
    cacheText();
}

我认为虽然这实现了一个计时器,但这是一个非常实用的解决方案。它也恰好有效(tested).

:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Textarea charCount - 防止用户粘贴 的相关文章

随机推荐

  • Openlayers获取鼠标下图块的图片url

    我正在寻找鼠标下图块的图像 url 使用最新版本v4 6 4 有任何想法吗 谢谢 图块源类包含有关图块网格的所有信息 tileSource getTileGrid 您可以访问它的加载函数 http openlayers org en lat
  • 控制器 @Mixin 在重新编译正在运行的应用程序后才起作用

    在我最新的 grails 2 3 0 项目中 我使用的是 Mixin混合辅助类的注释以保持我的controller更干 如果在控制器内进行了一些更改以强制重新编译控制器 则 mixin 才可以工作 初始编译后 grails run app
  • C中的printf如何对浮点数进行舍入?

    我正在尝试实施printf我想知道如何printf对浮点数进行舍入 因为我找不到一般规则 例如 如果输入 gt printf f 1f 2f 5f 12f 0 000099 0 000099 0 000099 0 000099 0 0000
  • Spring Integration jdbc:inbound-channel-adapter - 将 max-rows-per-poll 动态设置为节流

    我有一个 JDBC inbound channel adapter 设置 max rows per poll 动态以限制在通道上传递的消息 我有一个容量为 200 的 QueueChannel 入站通道适配器会将消息发送到此 QueueCh
  • 以编程方式切换复选框

    我有一个需要检查 不可检查的项目的 ListView 我已经设置了一个 ArrayAdapter 当前使用 android R layout simple list item multiple choice 作为行 并且所有内容都显示得很好
  • 如何使用 Javascript 获取网站上所有可用图片 URL 的列表?

    我很好奇 DownThemAll 是如何做到这一点的 他们使用 JavaScript 吗 如何使用 Javascript 获取网站中所有 url 的列表 使用集合 Links document links href Images docum
  • 在箱线图中添加每组的观察数

    继这个问题之后 如何在 ggplot2 箱线图中添加每组的观察数量并使用组平均值 https stackoverflow com questions 15660829 我想添加每组的观察数量ggplot箱线图也是如此 但我添加了一种颜色ae
  • Emacs Org 模式:执行简单的 python 代码

    如何在 Emacs 的 Org 模式下执行非常简单的 Python 代码 第一个示例工作正常 但是我无法让它给出最简单计算的结果 works begin src python def foo x if x gt 0 return x 10
  • 原型范围不起作用

    我在应用程序中创建了一个原型作用域 bean 并使用 setter 将其注入到另一个 bean 中 但是当我在类中使用注入的 bean 时 它总是使用相同的实例而不是每次都使用新实例 这是代码的快照
  • 如何更改选项卡栏项目的默认灰色?

    我尝试更改默认的灰色Tab Bar项目 但 Xcode 发现错误 我使用了一些代码 该代码是 import UIKit extension UIImage func makeImageWithColorAndSize color UICol
  • paypal 10544 网关拒绝错误的原因

    您好 请告诉我 paypal DoDirectPayment 10544 Gateway Decline 错误的可能原因 我查了很多资料都找不到原因 首先是强制性的 愚蠢的人类把戏 问题 您确定您使用的卡是有效的信用卡吗 如果您在现场 而不
  • 捕获 stdout 和 stderr 到管道

    我想从子进程中读取 stderr 和 stdout 但它不起作用 main rs use std process Command Stdio use std io BufRead BufReader fn main let mut chil
  • 如何更改 git 历史记录中的文件路径?

    这是我所拥有的 我的代码的 git 存储库 projects proj1 no git repo here yet subproj1 lt current git repo here 这就是我想要的 一个 git 存储库 它现在正在跟踪使用
  • 显示 R 中函数的源代码[重复]

    这个问题在这里已经有答案了 我可以用lm or class knn查看源代码 但我未能显示 princomp 的代码 这个函数 或其他东西 是用 R 编写的还是使用了其他字节码 我也无法使用来自的建议找到源代码如何显示包中 S4 函数的源代
  • 理解 `k : Nat ** 5 * k = n` 签名

    以下函数编译 onlyModByFive n Nat gt k Nat 5 k n gt Nat onlyModByFive n k 100 但有什么作用k以其代表Nat 5 k n syntax 另外 我该如何称呼它 这是我尝试过的 但我
  • 如何读取 web.config 文件中的 appSettings 部分?

    我的 XML 看起来像这样 文件名是web config
  • “cl”未被识别为内部或外部命令

    下面是我在 windows7 中运行 scons 编译器时的错误消息 cl is not recognized as an internal or external command operable program or batch fil
  • 使用 diff 手动合并两个文件

    我想通过执行以下操作来合并两个文件 将两个文件的差异输出到临时文件中并 手动选择我想要复制 保存的行 这里的问题是diff u只给我一个文件行的上下文 而我想以统一的格式输出整个文件 有什么办法可以做到这一点吗 一种可能适合您的选择 sdi
  • 创建反应应用程序,重新加载不起作用

    我刚刚开始使用 React 进行编码创建反应应用程序 https github com facebookincubator create react app 在文档中说 如果您进行编辑 页面将重新加载 我不知道哪个模块负责自动重新加载 we
  • Textarea charCount - 防止用户粘贴

    下面的代码工作正常 只是如果我粘贴一个超过 10 个字符的字符串 它应该只粘贴前 10 个字符 目前还没有这样做 如何防止粘贴超过 10 个字符 http jsfiddle net qfzkw 2 http jsfiddle net qfz