使用JS或Jquery - 是否可以使用掩码显示只读字段,但在复制时显示未掩码值?

问题描述:

我有一个代码生成器窗体,有2个文本框。第一个需要12位数的代码,然后当按下按钮时,通过算法运行该代码并吐出一个12位数的密钥。我希望(对于这两个字段实际上)数据用掩码输入,但如果选中并复制,则为一串数字。使用JS或Jquery - 是否可以使用掩码显示只读字段,但在复制时显示未掩码值?

例如:

用户键入到文本框:123456789012 掩模显示在框中作为输入:1234-5678-9012 用户按下按钮生成 在第二个文本文本框(只读)显示返回代码为:5798-1521-4886 当用户复制第二个文本框并将其粘贴到记事本中时,值为:579815214886

这可能吗?我使用了大量的JQuery遮罩插件,但它们都仍然在字符串中复制/粘贴遮罩数据。我唯一能想到的另一件事是,当一个领域获得焦点去除面具,但是当它失去了应用面具的焦点时。有没有更好的办法?

谢谢你的帮助。

+0

您可以将“复制”和“粘贴”事件绑定到输入。 – gustavodidomenico

+0

@gustavodidomenico并不重要。在“复制”事件发生时,文本已经被复制,您不能改变它。 '粘贴'与此无关 – Ian

+0

只是不同意你。 – gustavodidomenico

我通过在提交表单时删除掩码来解决它。当获得焦点时还要移除遮罩,并在焦点丢失时应用遮罩。

其实我只能访问IE浏览器。

首先一个简单的输入框:

<input type="text" id="field" /> 

其次,结合副本事件(在地方上的jQuery更高版本使用绑定的):

$(function() { 
    $("#field").bind("copy", function (e) { window.clipboardData.setData("Text", "MyCustomText"); }); 
}); 

当你复制输入框内的文字,将“MyCustomText”放入剪贴板数据中。你可以用没有掩码的字段替换它。

+0

刚试过那段代码。我使用最新的jQuery,因此我将“绑定”更改为“开”,将“#field”更改为“#overrideCode”,并且我试着将“MyCustomText”的硬编码值设置为“blahblahblah”。 如果我理解你,我应该能够从id =“overrideCode”的文本框中复制值,并且它应该粘贴“blahblahblah”的值。 到目前为止,我没有这样的结果。 – mvanella

+0

您使用的是Internet Explorer吗? – gustavodidomenico