禁用Ctrl + C.

时间:2011-03-17 19:55:08

标签: java javascript html jsf

注册网站时,它有2个字段。电邮和电子邮件确认。 问题是,人们正在复制他们在第一场上写的东西,并粘贴在另一场上。 我想禁用它,有可能吗?

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

4 个答案:

答案 0 :(得分:7)

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

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

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

解决方案是使用更好的解决方案。强制执行已经预期的减少学习曲线,或选择一些(提及OpenID)来回避令人反感的任务。

答案 1 :(得分: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 + Insert

答案 2 :(得分:0)

我认为这个问题与你的问题很相似:Disable pasting text into HTML form

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

答案 3 :(得分:0)

请不要那样做。我讨厌不得不复制我的电子邮件地址,如果我真的不得不输入两次,我会离开,除非我因某种原因被迫开帐户。