2012-08-15 52 views
0

我有以下表单字段:重复用户的电子邮件输入字段为用户名字段(剥离一切,包括和之后“@”)

<label for="user_email"><?php _e('Your Email'); ?>: </label> 
<input type="text" name="user_email" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" id="user_email" class="required email" tabindex="102" /> 

<label for="user_login"><?php _e('Username'); ?>: </label> 
<input type="text" name="user_login" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" id="user_login" tabindex="101" class="required" /> 

有没有什么办法让USER_LOGIN字段从实时填充输入到user_email(理想情况下是字母,如果没有,在不重点之后),在@符号之前停止,以便当用户将“[email protected]”填入user_email字段时,user_login字段将自动填入“example “?

我想最终将用户名字段设置为隐藏,但希望看到它是否首先可见。

+1

如果你使它隐藏那么不能两个人有相同的用户名? [email protected]和[email protected] – Timm 2012-08-15 10:37:35

+0

http://www.php.net/manual/en/function.explode.php – 2012-08-15 10:41:05

+0

@Tim是对的。我不认为隐藏该领域是一个好主意,请参阅我的答案了解详情。 – 2012-08-15 10:47:23

回答

0

是的,你可以听的关键事件和值设置为这样的其他领域:

$('#user_email').keyup(function(){ 
    var email = $('#user_email').val(); 
    var index = email.indexOf('@'); 
    var username = index >= 0 ? email.substring(0, index) : email; 
    $('#user_login').val(username);  
});​ 

See this fiddle

我认为这个功能可能是得心应手提出了一些用户名,但用户应该能够覆盖它。也许他想要一个不同的名字或名字已经被采用了。否则,您可以使用整个电子邮件地址和用户名,例如facebook。

此外,如果您隐藏用户名字段,您可以将其忽略并使用PHP从服务器端的电子邮件地址获取用户名。请记住,用户可以向您发送一些其他值,只需通过浏览器包含的工具操作页面即可。或者,也许JavaScript被禁用,并且该字段将为空。

简而言之:你应该知道该领域,并让用户使用它,或者只是完全删除它。根据需要对KEYUP或其他相关行动

0

火这样的:

$('#user_login').val($('#user_email').val().split('@')[0]); 

你应该做出改变可能:

设置:

var userNoEdit = true; 

在电子邮件的事件变化:

if(userNoEdit){ 
    $('#user_login').val($('#user_email').val().split('@')[0]); 
} 

上的用户名的情况下手动更改

userNoEdit = false; 
相关问题