Foros del Web » Programando para Internet » Javascript »

Convertir la primer letra de cada palabra en mayúscula

Estas en el tema de Convertir la primer letra de cada palabra en mayúscula en el foro de Javascript en Foros del Web. Buscando una solucion para mi campo Nombre y Apellido , encontre este script. Como modificarlo para que solo admita caracteres alfabeticos y no permita espacios ...
  #1 (permalink)  
Antiguo 10/02/2007, 19:39
Avatar de alegna  
Fecha de Ingreso: julio-2005
Mensajes: 14
Antigüedad: 18 años, 9 meses
Puntos: 0
Convertir la primer letra de cada palabra en mayúscula

Buscando una solucion para mi campo Nombre y Apellido, encontre este script. Como modificarlo para que solo admita caracteres alfabeticos y no permita espacios vacios al comienzo de la cadena?. El original en w ww.desarrolloweb.com/articulos/1507.php

Cita:
<html>
<head>
<title>Nombre y Apellido</title>
<script language="javascript">
function validar(solicitar){
var index;
var tmpStr;
var tmpChar;
var preString;
var postString;
var strlen;
tmpStr = solicitar.value.toLowerCase();
strLen = tmpStr.length;
if (strLen > 0)
{
for (index = 0; index < strLen; index++)
{
if (index == 0)
{
tmpChar = tmpStr.substring(0,1).toUpperCase();
postString = tmpStr.substring(1,strLen);
tmpStr = tmpChar + postString;
}
else
{
tmpChar = tmpStr.substring(index, index+1);
if (tmpChar == " " && index < (strLen-1))
{
tmpChar = tmpStr.substring(index+1, index+2).toUpperCase();
preString = tmpStr.substring(0, index+1);
postString = tmpStr.substring(index+2,strLen);
tmpStr = preString + tmpChar + postString;
}
}
}
}
solicitar.value = tmpStr;
}
</script>
<body onLoad="this.document.solicitar.nombre.focus()">
<form action="mailto:[email protected]" method="post" name="solicitar" onSubmit="return validar(this)">
<!--Datos Personales-->
<fieldset>
<legend>Sus Datos</legend>
<table>
<tr>
<td>
<label>Nombre y Apellido:</label>
<input type="text" name="Nombre" id="nombre" maxlength="30" value="" onKeyUp="validar(this)" class="campo">
</td>
</tr>
<tr>
<td><input type="submit" value="Enviar Datos" name="enviar"></td>
<td><input type="reset" value="Limpiar Datos"></td>
</table>
</fieldset>
</form>
</body>
</html>
  #2 (permalink)  
Antiguo 11/02/2007, 04:01
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Convertir la primer letra de cada palabra en mayúscula

Hola alegna

En lugar de modificar el código que has puesto, he "creado" un nuevo. A ver si te sirve.

Pon así el cuadro de texto:

Código:
<input type="text" name="Nombre" id="nombre" maxlength="30" value="" onkeypress="return validar(event,this)" class="campo">
Y utiliza esta función:

Código:
function validar(e,solicitar){
  // Admitir solo letras
  tecla = (document.all) ? e.keyCode : e.which;
  if (tecla==8) return true;
  patron =/[\D\s]/;
  te = String.fromCharCode(tecla);
  if (!patron.test(te)) return false;
  // No amitir espacios iniciales y convertir 1ª letra a mayúscula
  txt = solicitar.value;
  if(txt.length==0 && te==' ') return false;
  if (txt.length==0 || txt.substr(txt.length-1,1)==' ') {
    solicitar.value = txt+te.toUpperCase();
    return false;
  } 
}
Saludos,

Última edición por JavierB; 11/02/2007 a las 04:22
  #3 (permalink)  
Antiguo 11/02/2007, 04:17
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Convertir la primer letra de cada palabra en mayúscula

mi solución es la siguiente:

El campo dejalo tal y como esta y en el formulario donde pone

Código:
onsubmit="return validar(this)"
pon

Código:
onsubmit="return comprobar()"
Código PHP:
function comprobar(){
var 
cadena document.getElementById("nombre").value;
var 
exp = /^[^a-zA-Z]/
var 
dev true;
if(
exp.test(cadena))
                
dev false;

return 
dev;


Saludos

Última edición por wigglyUtrera; 11/02/2007 a las 05:08
  #4 (permalink)  
Antiguo 15/02/2007, 16:52
Avatar de alegna  
Fecha de Ingreso: julio-2005
Mensajes: 14
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Validar campos utilizando varias funciones

Hola:

Esto es lo que pude lograr a partir de la ayuda de wigglyUtrera y JavierB, gracias a ambos!!!

Código:
<html>

<head>

<title>Solicitar Documento</title>

<!--**************** Estilo para elementos del formulario ****************-->
<style>
fieldset {clear: both; width: auto; margin: 5% 20%; padding: 3px;
	  border: thick 1px #def;}
								 
label    {display: block; width: 150px;
          font: 80% Arial, Helvetica, sans-serif; margin-left: 7px ;}
								 
.botones {text-align: center;}

#control {display: inline; margin: 0px 25px;}

.campo   {display: inline; width: 200px; margin: 5px 6px 5px 6px;
          padding: 2px; border: inset 1px #abc;}
</style>

<script>
/******************************************************************************/
/******************************** VALIDACION ********************************/
/******************************************************************************/

  // Campo Usuario
     function vUser(){
     var c_nu = /^[a-z\.]([a-z0-9\._]){4,27}$/ //campo usuario
     if(!c_nu.test(solicitar.usuario.value)){
     alert('Nombre de usuario inválido. Debe contener entre 5 y 28 caracteres.\nNo se permiten: campos o cadenas vacías, espacios ni mayúsculas.\nPuede utilizar guiones bajos, puntos y números pero NO como primer caracter.');
     solicitar.usuario.focus();
     solicitar.usuario.select();
     return false;
     }
     return true;
     }

  // Campo Nombre
     function vNom(e,solicitar){
     // Admitir solo letras
		 tecla = (document.all) ? e.keyCode : e.which;
		 if (tecla==8) return true;
		 patron =/[\D\s]/;
		 te = String.fromCharCode(tecla);
		 if (!patron.test(te)) return false;
    // No admitir espacios iniciales
		 txt = solicitar.value;
		 if(txt.length==0 && te==' '){
		 alert('No se permiten espacios iniciales.');
		 return false;
		 }
    // Convertir 1° letra a mayuscula
		 if (txt.length==0 || txt.substr(txt.length-1,1)==' ') {
		 solicitar.value = txt+te.toUpperCase();
                 return false;
                 }
		 return true;
	         }
    // No admitir campo vacio
                 function vacio(){
	          var c_na = /^([a-z]|[A-Z]|á|é|Ã*|ó|ú|ñ|ü|\s)+$/
                  if(!c_na.test(solicitar.nombre.value)){
                  alert('Escriba su nombre y apellido respetando mayúsculas, minúsculas y acentos.');
		 solicitar.nombre.focus();
                 return false;
                 }
                 return true;
                 }		 

  // Campo EMAIL
  //Script tomado de:
  //w ww.forosdelweb.com/showpost.php?p=283672&postcount=86
  //Cómo validar una dirección de email utilizando expresiones regulares
  //por SpiceMan
  function emailCheck (emailStr) {
	   var emailPat=/^(.+)@(.+)$/;
	   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	   var validChars="\[^\\s" + specialChars + "\]";
	   var quotedUser="(\"[^\"]*\")";
	   var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/;
	   var atom=validChars + '+';
	   var word="(" + atom + "|" + quotedUser + ")";
	   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	   var matchArray=emailStr.match(emailPat);
	   if (matchArray==null) {
           alert('La dirección de correo parece ser inválida (verifique las @ y .)')
	   solicitar.email.select();
           return false
           }
           var user=matchArray[1]
           var domain=matchArray[2]
           if (user.match(userPat)==null) {
           alert('El nombre de usuario parece ser inválido.')
	   solicitar.email.select();
           return false
           }
           var IPArray=domain.match(ipDomainPat)
           if (IPArray!=null) {
           for (var i=1;i<=4;i++) {
           if (IPArray[i]>255) {
           alert('La direccion IP de destino es invalida!')
	   solicitar.email.select();
           return false
           }
           }
           return true
           }
           var domainArray=domain.match(domainPat)
           if (domainArray==null) {
           alert('El dominio no parece ser válido.')
	   solicitar.email.select();
           return false
           }
           var atomPat=new RegExp(atom,"g")
           var domArr=domain.match(atomPat)
           var len=domArr.length
           if (domArr[domArr.length-1].length<2 || 
           domArr[domArr.length-1].length>3) {
           alert('Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.')
	   solicitar.email.select();
           return false
           }
           if (len<2) {
           var errStr="Dominio Invalido!";
           alert(errStr)
	   solicitar.email.select();
           return false
           }
           return true;
           } 
//-->
</script>

</head>

<body onLoad="this.document.solicitar.usuario.focus()">

<form action="mailto: [email protected]" method="post" name="solicitar" id="solicitar" onSubmit="return (vUser(this) && vacio(this) && emailCheck(this.email.value))"> 

<!--Datos Personales-->
<fieldset>
 <legend>Identificaci&oacute;n</legend>
  <table>
   <tr>
    <td>
     <label>Usuario:</label>
     <input type="text" name="usuario" id="usuario" maxlength="30" value="" class="campo"> 
    </td>
    <td>
    <label>Nombre y Apellido:</label>
    <input type="text" name="nombre" id="nombre" maxlength="30" value="" onkeypress="return vNom(event,this)" class="campo">
    </td>
    <td>
    <label>Correo electr&oacute;nico:</label>
    <input type="text" name="email" id="email" maxlength="30" value="" class="campo" >
    </td>
   </tr>
 </table>
</fieldset>

<!--Boton  de Envio-->
   <div class="botones">
    <div id="control">
    <input type="submit" value="Enviar Solicitud" name="enviar">
    </div>
   </div>

</form>
Estuve mirando la FAQ # 28 Confirmación de datos: w ww.forosdelweb.com/showpost.php?p=260723&postcount=29
y ahora estoy trabajando en eso...

Alegna
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:16.