之前已經分享過一個在dom中用戶輸入姓名后自動用js拆分成姓與名到表單中的jquery插件,由于項目的需要,需要一個在客戶端自動拆分,但不需要將拆分結果呈現給用戶的方法,所以又寫了一個獨立的方法,貼出來跟大家分享交流
$.extend({
splitName: function(fullname){
var hyphenated = ['歐陽','太史','端木','上官','司馬','東方','獨孤','南宮','萬俟','聞人','夏侯','諸葛','尉遲','公羊','赫連','澹臺','皇甫',
'宗政','濮陽','公冶','太叔','申屠','公孫','慕容','仲孫','鐘離','長孫','宇文','城池','司徒','鮮于','司空','汝嫣','閭丘','子車','亓官',
'司寇','巫馬','公西','顓孫','壤駟','公良','漆雕','樂正','宰父','谷梁','拓跋','夾谷','軒轅','令狐','段干','百里','呼延','東郭','南門',
'羊舌','微生','公戶','公玉','公儀','梁丘','公仲','公上','公門','公山','公堅','左丘','公伯','西門','公祖','第五','公乘','貫丘','公皙',
'南榮','東里','東宮','仲長','子書','子桑','即墨','達奚','褚師'];
var vLength = fullname.length;
var lastname = '', firstname = '';//前為姓,后為名
if(vLength > 2){
var preTwoWords = fullname.substr(0, 2);//取命名的前兩個字,看是否在復姓庫中
if($.inArray(preTwoWords, hyphenated) > -1){
lastname = preTwoWords;
firstname = fullname.substr(2);
}else{
lastname = fullname.substr(0, 1);
firstname = fullname.substr(1);
}
}else if(vLength == 2){//全名只有兩個字時,以前一個為姓,后一下為名
lastname = fullname.substr(0, 1);
firstname = fullname.substr(1);
}else{
lastname = fullname;
}
return [lastname, firstname];
}
});