2014-10-07 73 views
0

我想创建一个基于jQuery的人的名字的用户名。动态创建用户名

我不知道如何开始,我正在考虑拆分名称,从每个部分获取第一个字母并与姓氏连接。但是如果名字有很多词汇,我不知道该怎么做。

例如我的名字

'First' -> username 'peter' 
'First Second' -> username 'fsecond' 
'First Second Third' -> username 'fsthird' 

代码(只做第一种情况,但如果有许多中间的名字?)

function createUsername(fullName) { 

    var piece; 
    var size; 

    piece = fullName.split(' '); 
    size = piece.length; 
    if(size == 1) 
    $("#userName").val(piece[0]); 
} 


<input type='text' onKeyUp = 'createUsername(this.value)'/> 
<input type='text' name='userName' id='userName' /> 

回答

2

你可以像下面这样做

function createUsername(name) { 
    return name.split(" ").map(function(v, i, a) { 
     return i !== (a.length - 1) ? v[0] : v; 
    }).join().toLowerCase(); 
} 
+0

完美!!谢谢! – gbvisconti 2014-10-07 16:25:13

+0

欢迎。很高兴帮助你:) – 2014-10-07 16:25:43

1

你可以把你的分裂阵列的姓氏并重复它,如下所示:

function createUsername(fullName) { 

    var piece; 
    var size; 

    piece = fullName.split(' '); 
    size = piece.length; 
    var name = piece[size-1].toLowerCase(); 
    for (var i = size -2; i > 0; i--) { 
     name = piece[i][0].toLowerCase() + name; 
    } 
    $("#userName").val(name); 
} 
1

您在正确的轨道上,根据空间拆分字符串以获取用户'但是之后你需要循环才能得到姓氏前的所有姓名的第一个字母。

function createUsername(fullName) { 

    var piece, 
     username = []; 

    piece = fullName.split(' '); 

    if (piece.length > 1) { 
    for (var i = 0; i < piece.length; i++) { 
     if (i < piece.length - 1) { 
     username.push(piece[i].charAt(0)); 
     } else { 
     username.push(piece[i]); 
     } 
    } 
    } else { 
    username.push(piece[0]); 
    } 

    $("#userName").val(username.join("")); 
} 

Here's a CodePen example

1

编辑,更新;名称的添加处理,包括四个或更多个字

尝试(V2)

function createUserName(fullName) { 
    var s = fullName.toLowerCase().match(/[a-z]+/g) 
    , l = s.length, _s = "", y = -1; 
     do { _s += s[++y][0] } while (_s.length < l -1); 
      return l > 1 ? _s + s[l -1] : fullName; 
    }; 

http://jsfiddle.net/guest271314/yfyogoqd/的jsfiddle

+0

它适用于有3个单词的名字,但如果名字有四个或更多? Amit Joki的回答正常。无论如何感谢您的帮助! – gbvisconti 2014-10-08 11:59:10

+0

查看更新后的帖子。增加了用于处理包括四个或更多单词的名称的片段。高兴地帮助,如果能够:)谢谢 – guest271314 2014-10-08 18:45:09