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

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

4

2 回答 2

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);     
});​

看到这个小提琴

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

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

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

于 2012-08-15T10:38:46.560 回答
0

根据需要在 keyup 或其他相关操作上触发:

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

您应该使更改成为可能:

设置:

var userNoEdit = true;

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

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

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

userNoEdit = false;
于 2012-08-15T10:39:06.200 回答