将用户电子邮件输入字段复制到用户名字段中(去除包括“@”和之后的所有内容)

Duplicate user email input field into username field (stripping everything including and after '@')

本文关键字:字段 用户 之后 复制 输入 电子邮件 包括      更新时间:2023-09-26

我有以下表单字段:

<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中实时填充(理想情况下是逐个字母,如果没有,则在未聚焦后),在@符号之前停止,以便当用户在user_email字段中填写"example@example.com"时,user_login字段会自动填充"示例"?

我想最终将用户名字段设置为隐藏,但想先看看它是否明显有效。

是的,您可以侦听关键事件并将值设置为其他字段,如下所示:

$('#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);     
});​

看到这个小提琴

我认为这个函数可能很方便地建议一些用户名,但用户应该能够覆盖它。也许他想要一个不同的名字,或者这个名字已经被取了。否则,您可以只使用整个电子邮件地址广告,例如Facebook所做的用户名。

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

简而言之:你应该如何让该字段并让用户使用它,或者只是完全删除它。

根据需要

在keyup或其他相关操作中触发它:

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

您应该使更改成为可能:

建立:

var userNoEdit = true;

关于电子邮件的事件更改:

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

在事件手动更改用户名时:

userNoEdit = false;