我有一些(超过数千)用户坚持使用他们的名字登录,但是系统坚持提供完整的电子邮件地址(名称+ @ 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>
有人建议如何使用提交功能解决它或其他似乎更好的想法?
答案 0 :(得分:3)
$('#email').change(function() {
var val = $(this).val();
if(val.indexOf('@my-mail.com') == -1)
$(this).val(val+'@my-mail.com');
});
如果它不是输入值的一部分,这将添加'@ 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
的调用。