2011-03-17 77 views
1

注册到网站时,它有2个字段。确认电子邮件和电子邮 问题是,人们正在复制他们在第一个字段上写的内容并粘贴到其他字段上。 我想禁用它,这可能吗?禁用Ctrl + C

<h:inputText id="email" value="#{registerBean.email}" maxlength="60" /> 
+6

“重复电子邮件地址”是注册时最恼人的事情之一。你不能只使用OpenID吗? – 2011-03-17 19:58:11

回答

7

在UI设计中追踪最重要的事情之一(如果您关心的是一致的用户界面)是人们期待的所有细微差别。

如果您禁用了“复制”热键序列,那么很多人会感到沮丧,因为您的界面不符合操作系统其余部分的细微差别。虽然我明白你为什么要这样做,但这并不能说服人们你的代码没有被破坏。毕竟“Ctrl + C”在其他地方工作。

一旦你偏离实施预期的UI控制细微差别,那么你需要指出细微差别在哪里以及它被拒绝的地方。这是不一致用户界面的定义。由于用户不会在那里解释当用户界面做了他们不期望的事情时的“为什么”,他们总会认为它是一个错误。如果他们确实让你告诉他们为什么他们不能在他们的操作系统的其他部分做某些事情,他们会一直认为你在执行其他人允许的愚蠢行为时过分热心。

解决方案是使用更好的解决方案。实施已经预期会减少学习曲线的内容,或选择一些回避令人反感的任务的内容(OpenID已被提及)。

+0

我同意你的意见,但是,我的老板想用这种方式,我会试着说服他。 – pringlesinn 2011-03-18 12:34:25

0

This page提出以下解决方案:

<script language="javascript"> 

function onKeyDown() { 
    // current pressed key 
    var pressedKey = String.fromCharCode(event.keyCode).toLowerCase(); 

    if (event.ctrlKey && (pressedKey == "c" || pressedKey == "v")) { 
     // disable key press porcessing 
     event.returnValue = false; 
    } 
} // onKeyDown 

</script> 

我虽然补充一点,在总体上是不可能的网页告诉客户端浏览器“禁用剪切和粘贴”。

顺便说一句,我从来没有使用Ctrl + C复制文本。我在XWindows上,所以只需选择文本将复制它。如果我在Windows系统上我通常做按Ctrl +插入

+0

大多数人使用ctrl + c,所以我猜它已经帮了很多嘻嘻 – pringlesinn 2011-03-17 20:06:59

+0

这是不好的方法,它可以防止用户实际输入电子邮件。德国键盘上的'@'字符是通过ctrl + alt + V组合键获得的。许多斯拉夫国家使用德国QWERTZ的变体,并且通过这个脚本,您可以从您的注册表中阻止欧洲的一半。 – 2013-01-03 22:47:18

0

我想,这个问题是非常类似于你:Disable pasting text into HTML form

我的答案总结:可以,但它很混乱,而且很糟糕的UI设计。他们对于更好的UI设计也有一些很好的建议。

0

请不要这样做。我讨厌复制我的电子邮件地址,如果我实际上需要输入两次,我会离开,除非我因为某种原因被迫开户。