【问题标题】:Allow keyboard shortcuts while limiting characters in iframe允许键盘快捷键同时限制 iframe 中的字符
【发布时间】:2015-02-13 07:56:32
【问题描述】:

我有一个 iframe,用户可以使用它来输入和标记带有一些 html 的文本。不过,我想限制他们可以输入的字符数。

为了解决这个问题,我使用以下代码:

iframeDocument.onkeypress=function(e){
 if(iframeDocument.body.textContent.length > 99 && e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 40 && e.keyCode !=37 && e.keyCode != 38
 && e.keyCode !=39 && e.keyCode !=17){
 e.stopPropagation();
 e.preventDefault();
 return false;
 }}

这将它们限制为 100 个字符,同时仍然允许它们使用标记,而不会影响它们可以使用的字符数。这种方法有两个问题我无法解决。

  1. 达到限制时,诸如 ctrl+c 和 ctrl+v 之类的键盘快捷键将被禁用。
  2. 达到限制时,用户无法突出显示文本并键入另一个字符来替换它

我该如何解决这些问题?

【问题讨论】:

标签: javascript jquery html iframe


【解决方案1】:

即使您限制用户只能输入 100 个字符,他仍然可以通过禁用 javascript 来破坏它。用户还可以使用检查工具编辑 javascript 或 html。所以这在客户端是不完全可能的。您还必须在服务器端进行验证。在你的 iframe 上,你可能有一个 textarea,你可以试试这个。

    <textarea onchange='this.value=(this.value.length<100)?this.value:"";' onkeypress='return (this.value.length<100);' >
    </textarea>

【讨论】:

  • 这仍然允许html标签吗?我通过返回一个子字符串值尝试了类似的操作,但它最终会删除部分标签而不是纯文本。
  • @Clint 这将允许 html 标签,因为我们没有编写任何逻辑来阻止 hml 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 2014-04-30
相关资源
最近更新 更多