小编Dyl*_*reb的帖子

将HTML输入限制为仅允许粘贴

是否可以在只接受粘贴输入的表单上输入HTML?

作为注册过程的一部分,最终用户需要在基本HTML输入表单中输入20个字符的标识令牌.理想情况下,用户只需将令牌复制/粘贴到相应的字段中即可.我们不希望允许用户手动输入,因为它们可能会输错字母,而且我们没有任何可靠的方法来验证输入.

令牌来自桌面软件,需要粘贴到已打开的网页(即从中下载软件的位置).因此,可点击链接不是可行的选择.

有没有办法做到这一点,例如通过Javascript?谢谢.


我的解决方案改编自SimplePi的答案:

<html>
<body>
<script type="text/javascript">
 function validate(evt) {
   var theEvent = evt || window.event;
   var key = theEvent.charCode || theEvent.which;

   if(key >= 32 && (theEvent.ctrlKey === undefined || !theEvent.ctrlKey)) {
    if(theEvent.preventDefault) theEvent.preventDefault();
    else theEvent.returnValue = false;
  }
 }
 </script>
  <span>Textbox name</span> <br />
 <input type="text" onkeypress='validate(event)' value=""/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这适用于某些浏览器,但不是所有浏览器.Mac上的Firefox是我发现的唯一一个攻击者 - 一般来说firefox报告ctrl-v的完全相同v,但在Windows上,theEvent.ctrlKey成员可以区分两者.在mac上执行相同操作显然需要keydown/up来检查cmd是否被按下.这是可行的,但不包含在此代码中,以防其他人希望使用此代码.

html javascript paste textfield

5
推荐指数
2
解决办法
4027
查看次数

Ctrl+C 无法可靠地终止 Windows 批处理脚本

我正在尝试编写一个批处理脚本,提示用户输入一个目录并将多个文件从该目录复制到另一个目录。为此,我有一个简单的循环,使用标签和set /p输入。问题是,尝试通过按下来摆脱这个循环ctrl+c并不总是有效。

:checkloop

@set /p READMEPATH=Please enter the location of readme.txt: 

@if not exist "%READMEPATH%\README.txt" goto somethingmissing

@goto allfound

:somethingmissing
@echo Can't find readme in directory "%READMEPATH%"
@goto checkloop

:allfound

@echo Okay, found
Run Code Online (Sandbox Code Playgroud)

示例输出类似于

Please enter the location of readme.txt:
Can't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file

5
推荐指数
1
解决办法
2716
查看次数

标签 统计

batch-file ×1

cmd ×1

html ×1

javascript ×1

paste ×1

textfield ×1

windows ×1