Come capitalizzare la prima lettera di ogni parola, come una città di 2 parole?

Il mio JS funziona bene quando la città ha una sola parola:

  • cHIcaGO ==> Chicago

Ma quando è

  • san diego ==> San diego

Come faccio a diventare San Diego?

function convert_case() { document.profile_form.city.value = document.profile_form.city.value.substr(0,1).toUpperCase() + document.profile_form.city.value.substr(1).toLowerCase(); } 

C’è una buona risposta qui :

 function toTitleCase(str) { return str.replace(/\w\S*/g, function(txt){ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); } 

o in ES6:

 var text = "foo bar loo zoo moo"; text = text.toLowerCase() .split(' ') .map((s) => s.charAt(0).toUpperCase() + s.substring(1)) .join(' '); 

Puoi usare i CSS:

 p.capitalize {text-transform:capitalize;} 
 function convertCase(str) { var lower = String(str).toLowerCase(); return lower.replace(/(^| )(\w)/g, function(x) { return x.toUpperCase(); }); } 

La funzione JavaScript:

 String.prototype.capitalize = function(){ return this.replace( /(^|\s)([az])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } ); }; 

Per utilizzare questa funzione:

 capitalizedString = someString.toLowerCase().capitalize(); 

Inoltre, questo funzionerebbe su più parole stringa.

Per assicurarti che il nome della città convertita sia stato inserito nel database, in minuscolo e prima lettera in maiuscolo, dovrai utilizzare JavaScript prima di inviarlo al server. I CSS semplicemente stili, ma i dati effettivi rimarrebbero pre-designati. Dai un’occhiata a questo esempio di jsfiddle e confronta il messaggio di avviso con l’output in stile.