Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
Evaluación condicional a una cadena

Estoy tratando de crear una verificación que busque ver si un campo ha cambiado del valor del marcador de posición. Si no es así, reasigno el valor changed original, ya que la función (en mi base de código real) tiene que mirar varios campos.

Estoy un poco confundido por qué:

changed = (locationField.value && locationField.value !== locationField.placeholder) ? true : changed;

está evaluando a una cadena vacía* si el campo se envía sin valor.

* salida al final de la publicación

Supongo que es el valor vacío de locationField.value , pero ¿no debería estar asignando 'verdadero' o el valor de cambiado? Cambiado (por lo que puedo ver) nunca es, y nunca debería ser una cadena.

Probablemente una pregunta simple, pero no puedo ver la respuesta.

Código abierto

 const locationField = document.querySelector('.location'); const submit = document.querySelector('.submit'); let changed = false; submit.addEventListener('click', e => { changed = (locationField.value && locationField.value !== locationField.placeholder) ? true : changed; console.log(locationField.value, locationField.placeholder, (locationField.value && locationField.value !== locationField.placeholder)); console.log(changed); // reset changed = false; });
 <input type="text" placeholder="test" class="location"> <button class="submit">Submit</button>

** EDITAR:

Resultados que obtengo:

entrada "cambiado" => "changed", "test", true

entrada "prueba" => "test", "test", false

entrada "" "", "test", "" , cuando esperaría "", "test", false

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

AND lógico (&&) evalúa los operandos de izquierda a derecha, regresando inmediatamente con el valor del primer operando falso que encuentra; si todos los valores son verdaderos, se devuelve el valor del último operando.

(fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND )

Entonces, en su caso, si locationField.value es "", que se evalúa como un valor falso, entonces lógico Y devolverá el valor de locationField.value (por eso devuelve una cadena vacía)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si primero conviertes locationField.value a un valor booleano, ya sea con !! o con Boolean() , entonces debería obtener el resultado esperado.

 (!!locationField.value && locationField.value !== locationField.placeholder)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda