2011-12-08 63 views
0

我试图弄清楚如何在文本输入中掩盖文本,就像它的密码字段一样,只有它不是。 这是一个个人的实验,我unserdtand这可能听起来很奇怪,但它的东西,我想试试,我已经使用的替代方法来改变字符星号,只有当我提醒值,它会提醒*当星号只应一个面具和警报应该显示真正的价值,这是否有意义,如果有的话有任何人想法如何做到这一点?掩码而不是替换?

感谢

回答

0

的“明显”的解决方案(除了首先使用密码字段)是有两个字段,掩码显示器领域,并与实际值的隐藏字段:

<input type="text" id="maskField1"> 
<input type="hidden" id="hiddenField1" name="field1"> 

<script> 
$("#maskField1").keyup(function(e) { 
    var newText = this.value.replace(/\*/g,""); 
    $("#hiddenField1")[0].value += newText; 
    this.value = this.value.replace(/[^*]/g,"*"); 
}); 
</script> 

不幸的是,你可以用这个演示中看到:http://jsfiddle.net/PrHuE/它只只要你添加更多的字符到最后作品目前的文字。 A real解决方案是很多比这更复杂,因为你必须允许用户在字符串中间添加文本,或者选择多个字符,然后重写或明确删除,或从剪贴板粘贴等。米以上诱捕KEYUP,但用户可以用鼠标贴,所以......

此外,如果用户实际类型的一些星号,混淆上面的代码。

你可以看到,我只是服用任何非星号字符显示的掩膜场和改变非星号星号之前他们追加到隐藏字段的结束。您可以在这些非星号字符串中找到位置,并将它们插入隐藏字段中的相同位置。这不会太难。但找出哪些字符已被删除(或替换)会更难,超出了我有时间在这里。

解决方案2:创建您自己的字体,每个字符看起来像星号,然后将字体嵌入到您的网页中并在输入字段中使用它。对于实际上允许这样做的浏览器,它将是一个无代码解决方案。对于显然不允许的浏览器,它根本无法工作。

0

嗯,这可能不是最好的主意,但是,你总是可以在类型对象发送到一个隐藏的股利和每一段文字的追加。

0

两种方式浮现在脑海中一个是有实际接收输入,并在可见的输入列表中的星号隐藏输入。另一种方法是替换字符的输入元素将其保存在一个变量和修改变量当用户键入它之前。

0

这让人很没有意义,当你必须做的就是实打实是设置一个简单的属性type="password"

这就是说,作为一个实验,我甚至不确定你能否正确地做到这一点,因为需要很多代码来模拟密码字段的行为方式,其中一些可能无法实现。

你将不得不不仅挂接到paste &​​事件,并覆盖它们的默认行为(它被插入场跨浏览之前可靠地获取粘贴剪贴板中的数据不是那么容易的),你必须同时处理字段中文本的全部和部分选择。

最坏的情况是可能加上糊事件部分选择。

至少,这是一个不平凡的任务,我怀疑最终的结果会使人感到自豪;)

相关问题