I want to capitalize all words in an input (using keyup function) to format names entered.
examples :
john doe => John Doe
JOHN DOE => John Doe
tommy-lee => Tommy-Lee
Currently, I use this code :
$("input").keyup(function() {
var cp_value= ucwords($(this).val(),true) ;
$(this).val(cp_value );
});
function ucwords(str,force){
str=force ? str.toLowerCase() : str;
return str.replace(/(\b)([a-zA-Z])/g,
function(firstLetter){
return firstLetter.toUpperCase();
});
}
But if the word contains an accentuated character, the following letter is also uppercased : John Döe => John DöE.
What is the best solution to get what I want ?
Thank you
Problem is with the word boundary if you do a manual boundary it works
function ucwords(str,force){
str=force ? str.toLowerCase() : str;
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function(firstLetter){
return firstLetter.toUpperCase();
});
}
and adding the Unicode for the accented characters as well