[ Foro de Javascript ]

convertir todo a mayuscula, 1ra palabra en mayuscula y concatenar si no esta vacio

28-Jan-2024 22:43
rossana jl
2 Respuestas


Hola, una pregunta.
Tengo 3 input: Apellido, Nombre, Nombre  Apellido Madre, y un Select para elegir el estado civil actual (si es caado, soltero, viudo, divorciado).

El input de Apellido, me convierte a mayúscula lo que se introduce, lo que no consigo es como hacer, si la persona tiene 2,3 o 4 nombres, cuando complete estos datos en el input de Nombres, me pase a mayúscula la 1ra letra de cada palabra.

El resultado final seria que me concatene estos datos en la caja TexTarea, ahí recién necesito estas correcciones, separados por una coma
Ejemplo:
input1: correa              input2: jose maria                 input3:  maria rodriguez   select: separado

Luego de presionar boton, los campos se concatenan y pasan a un texbox y a un  textarea :
        El Señor Jose Maria CORREA, de estado civil separado, es hijo de Maria Rodriguez.
-----------------------------------------------------------------------------------------

Si la persona no completa los campos anda. Cuando le doy click en boton PASAR AL TEXTAREA, me pone la coma de separacion, entonces deberia porner una condicion IF ELSE,
si el campo APELLIDO no esta vacio entonces concatene y agregue la un texto y la coma +"," +
if campo NOMBRE  no esta vacio entonces concatene. y agregue la coma.. y asi sucesivamente hasta concatenar todos los campos. es correcto?




28-Jan-2024 22:45
rossana jl

me olvide de poenr el codigo


<html>
<head>
 
    <title> Proyecto</title>
 
</head>
<body>
 
<script type="text/javascript">
 
   // Esto concatena los 3 inputs
    function concatenate()
        {
            concateText = document.getElementById("NomApe").value + ", "
                        + document.getElementById("Nom").value + ", "
                        + document.getElementById("madre").value;
            document.getElementById("concateForm").value = concateText;
        }
 
 
   // Esto concatena en textarea
 function copiarDatos(){
  var VarApee = document.getElementById("NomApe").value;
  var VarNomm = document.getElementById("Nom").value;
  var VarMadree = document.getElementById("madre").value;
 
  // aca podria poner un If, preguntando?
  var texto = VarApee + ", " + VarNomm + ", " +  VarMadree;
  document.getElementById("textToEncode").innerHTML = texto;
}
   // pasa a mayuscula el APELLIDO
function upperCase() {
   var x=document.getElementById("NomApe").value;
   document.getElementById("NomApe").value=x.toUpperCase();
}
 
</script>
    <h1>PASA TODAS LS PALABRAS A MAYUSCULA</h1>
    <table> <tr> <td>
               Apellido/s  <input type="text" id="NomApe" onblur="upperCase()">
        </td> </tr>        <tr> <td>
               Nombre/s   <input type="text" id="Nom"  >
        </td> </tr>        <tr> <td>
               Madre    <input type="text" id="madre">
        </td>  </tr>      <tr> <td>
        </td> </tr>      <tr>  <td>
                <button type="button" onclick="concatenate()">Pasar al la caja </button>
                <input type="text" name="textResult" id="concateForm" rows="4" cols="40">
        </td>  </tr>        <tr> <td>
estado civil
 <select name="estado" id="estado">
<option value="">Seleccione...</option>
<option value="1">casado</option>
<option value="2">soltero</option>
<option value="3">divorciado</option>
</select></td>
    </table>
<button type="button" id="boton" onClick="copiarDatos()"> Pasar al TexTarea</button>
<textarea id="textToEncode" style="width: 100%; height: 200px;">
</body>
 
</html>


 


30-Jan-2024 18:41
Nacho Cabanes (+84)

Eso de convertir la primera letra de una palabra a mayúsculas es algo frecuente: debes tomar el primer carácter (con ".charAt(0)") y convertirlo a mayúsculas (con ".toUpperCase()") y luego concatenar el resto de la cadena (que puedes obtener con "substring(1)":


function primeraMayuscula(texto) {
    return texto.charAt(0).toUpperCase() + texto.substring(1);
}



Si quieres mayúsculas en cada palabra, deberías hacer primero un ".split()", para obtener cada palabra, repetir ese proceso, y terminar con un ".join":


function mayusculasTitulo(texto) {
   var palabras = texto.toLowerCase().split(' ');
   for (var i = 0; i < palabras.length; i++) {
       palabras[i] = palabras[i].charAt(0).toUpperCase() + palabras[i].substring(1);     
   }
   return palabras.join(' '); 
}



Eso debería servir...






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)