添加后缀到表单字段

时间:2014-11-14 15:18:39

标签: javascript jquery html forms

我有一些(超过数千)用户坚持使用他们的名字登录,但是系统坚持提供完整的电子邮件地址(名称+ @ my-mail.com)。哪个是在不打扰用户的情况下为字段添加后缀的智能解决方案?

表格:

<form id="login_form" action="processing.php" method="post" class="form">
  <fieldset>
     <ul class="input_block">
        <li>
           <input type="text" name="email" id="email" value="" />
        </li>
        <li>
           <input type="password" name="passwort" id="password" />
        </li>
     </ul>
  </fieldset>

我玩了该领域的关键功能,但它并没有多大帮助。

<script>
$('#email').keyup(function(e){
   if(this.value.length > 12){
     this.value = this.value + '@my-mail.com';
  if( this.value.indexOf('@my-mail.com') <= 0 ){ 
     this.value = String.fromCharCode(e.which) + '@my-mail.com'; 
  }
});
</script>

我认为在提交之前操作字段的解决方案更加“正确”(遗憾的是我无法访问正在接收提交的PHP文件)。所以我尝试使用提交功能,这也不起作用。

<script>
$( "#login_form" ).submit(function( event ) {
   ("#email").value = ("#email").value + '@my-mail.com';
});
</script>

有人建议如何使用提交功能解决它或其他似乎更好的想法?

2 个答案:

答案 0 :(得分:3)

$('#email').change(function() {
  var val = $(this).val();
  if(val.indexOf('@my-mail.com') == -1)
    $(this).val(val+'@my-mail.com');
});

http://jsfiddle.net/g4oLtfw7/

如果它不是输入值的一部分,这将添加'@ my-mail.com'后缀。如果您想允许其他类型的电子邮件,但默认为“my-mail.com”,请尝试以下操作:

$('#email').change(function() {
  var val = $(this).val();
  if(val.indexOf('@') == -1)
    $(this).val(val+'@my-mail.com');
});

答案 1 :(得分:2)

或者:

$('#login_form').submit(function (e) {
    var email = $('#email'),
        user = email.val().split('@')[0],
        domain = '@my-mail.com';
    if (email.val().toLowerCase() !== (user + domain).toLowerCase()) {
        email.val(user + domain);
    }
});

$('#email').change(function (e) {
    var email = $(this),
        user = email.val().split('@')[0],
        domain = '@my-mail.com';
    if (email.val().toLowerCase() !== (user + domain).toLowerCase()) {
        email.val(user + domain);
    }
});

是我如何接近这一点(强制性小提琴:http://jsfiddle.net/e84v7nat/)。

此方法可确保您的用户指定了域并且域名是正确的。如果用户名区分大小写,请移除对.toLowerCase的调用。