Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilberto Jr

Primeira Letra do nome maiúsculo

Recommended Posts

Bom dia;

 

Seguinte, eu tenho um formulário de cadastro de cliente. A pessoa que faz o cadastro coloca o nome tudo em minusculo.

 

Eu queria uma função que colocasse a primeira letra em maiúsculo. Mas tem umas exceções que seria "Dos, Do, De, Da".

 

Alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gilberto, blza!

 

ASP

<%
Function Formata(frase)
	Temp = Split(frase," ")
	For i = LBound(Temp) to UBound(Temp)
		FraseTemp = FraseTemp &" "& UCase(Left(Temp(i),1))&mid(Temp(i),2)
	Next
	Formata = FraseTemp
End Function
 
Response.Write Formata("dos, do, de, da")
%>

JS

<script>
function pri_mai(obj){
    str = obj.value;
    qtd = obj.value.length;
    prim = str.substring(0,1);
    resto = str.substring(1,qtd);
    str = prim.toUpperCase() + resto;
    obj.value = str;
}
</script>

<input type="text" name="txt1" onBlur="pri_mai(this);" />

Espero ter ajudado,

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aooow WilNet, é nois aqui denovo trem kkkk

 

Essa função JS funcionou do jeito que eu quero. Mas tem um probleminha, vamos supor se eu digitar o meu nome que é "gilberto junior dos santos" ele deve ficar "Gilberto Junior dos Santos".

 

A função que postou ela só coloca a primeira letra em maiúsculo da primeira palavra. o restante da frase fica tudo minusculo.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrs, é nóis de novo mesmo, blza!

 

A que postei em ASP, retornará assim: "Gilberto Junior Dos Santos"

 

A que postei em JS, retornará assim: "Gilberto junior dos santos"

 

 

você pode fazer apenas com CSS então, bem simples:

<style>
.pri_mai{ text-transform:capitalize;}
</style>

<div class="pri_mai">gilberto junior dos santos</div>

Com CSS, retornará assim: "Gilberto Junior Dos Santos"

JS
<script>
	function c(id){
		/* *
		* @Tiago Araujo Silva
 		* @version 1.00 2007/3/2
		*/
		var palavras=document.getElementById(id).value;
		palavras=palavras.split("");
		var tmp="";
		for(i=0;i<palavras.length;i++){
			if(palavras[i-1]){
				if(palavras[i-1]==" "){palavras[i]=palavras[i].replace(palavras[i],palavras[i].toUpperCase());}
			}
			else{palavras[i]=palavras[i].replace(palavras[i],palavras[i].toUpperCase());}
			tmp+=palavras[i];
		}
		document.getElementById(id).value=tmp;
	}
</script>

<input type="text" id="teste" onkeyup="c('teste')">

Essa em JS, retornará assim: "Gilberto Junior Dos Santos"

Espero que ajude,
:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abraços,

 

:worship:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuando o script do @willnet, fica assim:

 

<input type="text" name="name" id="name" />

<script>
var $name = document.getElementById('name'),
    notCapitalize = ['do', 'de', 'da', 'dos'];

$name.addEventListener('blur', function(){
  var pieces = this.value.split(' '),
      capitalized = [];

  pieces.forEach(function(each) {
    if (notCapitalize.indexOf(each) !== -1) {
      capitalized.push(each);
    } else {
      capitalized.push(upperFirstLetter(each));
    }
  });

  this.value = capitalized.join(' ');
});

function upperFirstLetter(word) {
  return word.substring(0,1).toUpperCase() + word.substring(1, word.length);
}
</script>
as restrições estão no array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

outra forma ainda mais simples...

alert( capitalize("gilberto junior dos santos") ); //Gilberto Junior Dos Santos

function capitalize(str){
  return str.toLowerCase().replace(/\b(\s\w|^\w)/g, function(txt){
      return txt.toUpperCase();
  });
}

http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript#answer-26128016

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo Sóstenes, só falta não capitalizar as palavras:

['do', 'de', 'da', 'dos']
Pois a saída correta esperada é:

Gilberto Junior dos Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa do @Wbruno, ficou perfeita.

 

#7

 

Já foi pro meu báu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo Sóstenes, só falta não capitalizar as palavras:

['do', 'de', 'da', 'dos']
Pois a saída correta esperada é:

Gilberto Junior dos Santos

 

 

tendeu man, correção :thumbsup:

// Gilberto Junior d Santos
console.log(capitalize('gilberto junior d santos'));
// Gilberto Junior do Santos
console.log(capitalize('gilberto junior do santos'));
// Gilberto Junior dos Santos
console.log(capitalize('gilberto junior dos santos'));

function capitalize(str){
    return str.toLowerCase().replace(/\w\S*/g, function(txt){
        return (txt.length >= 1 && txt.length <= 3) ? txt:txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase();
  });
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@WilNet, agora estou usando o código do @WBruno. Perfeito.

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Primeira Letra Miuscula</title>
<script language="javascript" type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
</head>
 
<body>
<BODY>
<input type="text" name="name" id="name" />
 
<script>
var $name = document.getElementById('name'),
    notCapitalize = ['do', 'de', 'da', 'Dos'];
 
$name.addEventListener('keyup', function(){
  var pieces = this.value.split(' '),
      capitalized = [];
 
  pieces.forEach(function(each) {
    if (notCapitalize.indexOf(each) !== -1) {
      capitalized.push(each);
    } else {
      capitalized.push(upperFirstLetter(each));
    }
  });
 
  this.value = capitalized.join(' ');
});
 
function upperFirstLetter(word) {
  return word.substring(0,1).toUpperCase() + word.substring(1, word.length);
}
</script>
</body>
</html>

 

Fiz até uma mudança mudando para keyup no lugar do blur. Mas estou com um probleminha. O notCapitalize não esta funcionando.

 

Todas as palavras do texto fica com a primeira letra maiúsculo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código não vai funcionar no keyup.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O algoritmo não vai ter tempo de entender que "d" iria ser "dos" e usar o notCapitalize, pq o keyup faz com que o algoritmo seja processado a cada tecla.

 

Foi isso que eu quiz dizer com: "não vai funcionar no keyup".

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo

 

txt.length <= 3
Mas se a pessoa se chamar Ana deveria capitalizar, e com essa condição de menor ou igual a três o código está suscetível a falhas.

 

Escreva um teste unitário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo

 

txt.length <= 3
Mas se a pessoa se chamar Ana deveria capitalizar, e com essa condição de menor ou igual a três o código está suscetível a falhas.

 

Escreva um teste unitário.

 

 

Cê tem razão @William :clap:

e agora será que vai? kkk

function capitalize(str){
 return str.toLowerCase().replace(/\w\S*/g, function(txt){
  return (['da', 'das', 'de', 'do', 'dos'].indexOf(txt) > -1) ? txt:txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase();
 });
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hugo, bom dia.

 

O Seu código dentro do html ficaria assim?

<script>
function capitalize(str){
 return str.toLowerCase().replace(/\w\S*/g, function(txt){
  return (['da', 'das', 'de', 'do', 'dos'].indexOf(txt) > -1) ? txt:txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase();
 });
}
</script>
<input type="text" onBlur="return capitalize()" name="name" id="name" />

 

Pois eu coloquei dessa forma e não funcionou.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites


<input type="text" onkeyup="this.value=capitalize(this.value);" />

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.