代码之家  ›  专栏  ›  技术社区  ›  Iván Gabriel Campaña Naranjo

使用Javascript屏蔽注册页面上的原始电子邮件

  •  0
  • Iván Gabriel Campaña Naranjo  · 技术社区  · 7 年前

    我需要设置一个页面,允许用户使用他们的电子邮件进行注册,但作为一项要求,电子邮件不应该对人眼“可见”,我想一定有更好的方法来做到这一点,但到目前为止,我使用JQuery提出了这个选项:

    我创建了一个假控件,用于处理掩蔽并捕获文本,以便将其分配给隐藏字段(这样以前的工作代码将在不进行更改的情况下继续工作)。

    var emailControl = $("#eMail");
    var firstHalf = "";
    var secondHalf = "";
    var fullMail = "";
    
    emailControl.keyup(function(e){
      var control = e.currentTarget;
      var currentText = $(control).val();
    
      if (currentText.length == 0){
        fullMail = '';
        firstHalf = '';
        secondHalf = '';
        $(control).attr('type', 'password');
      }
      else{
        var components = currentText.split("@");
        var hiddenPart = "•".repeat(components[0].length);
    
        detectChanges(currentText);
    
        if (components.length == 2) {
          secondHalf = '@' + components[1];
        }
    
        $(control).attr('type', 'text');
        $(control).val(hiddenPart + secondHalf);
        fullMail = firstHalf + secondHalf;
      }
    });
    
    function detectChanges(originalText) {
      var position = originalText.indexOf('@');
      if (position == -1) {
        position = originalText.length;
      }
    
      for (var i = 0; i < position; i++){
        if (originalText[i] != "•"){
          firstHalf = firstHalf.substring(0, i) + originalText[i] + firstHalf.substring(i+1);
        }
      }
    }
    

    我确实设法让它在这里工作: https://codepen.io/icampana/pen/KbegKE

    1 回复  |  直到 7 年前
        1
  •  1
  •   QuickStyles    7 年前

    您可以为输入标记类型指定密码:type=“password”。 这可能会导致autofill发生一些不愉快的事情。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    <body>
      <form>
         email: <input type="password" name="email">
      </form>
    </body>
    </html>
    

    你也可以用CSS做类似的事情

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <style>
        input {
          -webkit-text-security: circle;
        }
      </style>
    </head>
    <body>
      <form>
        email: <input name="email">
      </form>
    </body>
    </html>