TransWikia.com

Igualar valor de un input text a todos los elementos de un array

Stack Overflow en español Asked by Husdady on December 4, 2020

$(function(){

        $('button:nth-of-type(1)').on('click', function(){

        var nombre = $('#name').val();

        alert('su nombre es ' + nombre);

        });

        $('button:nth-of-type(2)').on('click', function(){

        var profesion = $('#profession').val();

        var profesiones = ['profesor','peluquero','contador','odontologo'];
        
        alert('Su profesión es ' + profesion);

         if (profesion == profesiones[0]){
        alert('Su profesion no gana mucho dinero');
        }

    });
        });
body{
background: #EDEDED;
display: flex;
justify-content: center;
align-items: center;
}
button{    
background: #ccc;
color: black;
text-decoration: none;
padding: 0.25% 5%;
margin-left: 0.5%;
border: none;
display: inline-flex;
}
button:nth-of-type(1){
margin-right: 1.5%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Nombre:&nbsp;<input id="name" type="text" placeholder="Escribe un nombre...">
<button>Enviar</button>

Profesión:&nbsp;<input id="profession" type="text" placeholder="Escribe una profesión...">
<button>Enviar</button>

Hola a todos, tengo este pequeño html que muestra dos inputs text que te piden un nombre y una profesion. Mi problema es el siguiente: tengo una condicional que dice que cuando el valor del input #profession sea igual al primer elemento del array profesiones, te muestra una alerta: ‘Su profesion no gana mucho dinero’ . Entonces ¿Cómo igualo la VAR profesion a todos los elementos del array?, es decir, que suceda lo mismo con los demás elementos del array #profession. Lo he solucionado con: if (profesion == profesiones[0] || profesion == profesiones[1] || profesion == profesiones[2] || profesion == profesiones[3]){ alert('Su profesion no gana mucho dinero'); } Ahora imaginense que ese array tuviera 40 elementos o más, no pienso estar poniendo uno por uno. Regla del programador: "Si repites demasiado una cosa, es porque algo estas mal". ¿ Entonces existe alguna alternativa para esto ?

2 Answers

Lo puedes hacer preguntando si el elemento está en el array con inArray con JQuery. Puedes ver más información en https://api.jquery.com/jquery.inarray/.

if($.inArray(profesion, profesiones) > -1){
     alert('Su profesion no gana mucho dinero');
}

$(function(){

        $('button:nth-of-type(1)').on('click', function(){

        var nombre = $('#name').val();

        alert('su nombre es ' + nombre);

        });

        $('button:nth-of-type(2)').on('click', function(){

        var profesion = $('#profession').val();

        var profesiones = ['profesor','peluquero','contador','odontologo'];
        
        alert('Su profesión es ' + profesion);

        if($.inArray(profesion, profesiones) > -1){
           alert('Su profesion no gana mucho dinero');
        }

    });
        });
body{
background: #EDEDED;
display: flex;
justify-content: center;
align-items: center;
}
button{    
background: #ccc;
color: black;
text-decoration: none;
padding: 0.25% 5%;
margin-left: 0.5%;
border: none;
display: inline-flex;
}
button:nth-of-type(1){
margin-right: 1.5%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Nombre:&nbsp;<input id="name" type="text" placeholder="Escribe un nombre...">
<button>Enviar</button>

Profesión:&nbsp;<input id="profession" type="text" placeholder="Escribe una profesión...">
<button>Enviar</button>

Correct answer by Carmen on December 4, 2020

Partimos de que:

  • En realidad no necesitas JQuery para dicha operación
  • Nos podemos auxiliar de: Array.includes
  • El método anterior retornará true o false en concecuencia de que exista o no el elemento dinámico dentro del array
  • Dentro de un condicional solo estableces las posibles salidas para cada uno de los casos

Quedando de esta forma:

    if (!profesiones.includes(profesion)) {
      console.log(`No tengo registrada la profesión: ${profesion}`);
    } else {
      alert('Ganas poco');
    }

Answered by BetaM on December 4, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP