Foros del Web » Programando para Internet » Jquery »

No puedo encontrar la solucion - Jquery

Estas en el tema de No puedo encontrar la solucion - Jquery en el foro de Jquery en Foros del Web. Hola a todos, Estoy haciendo una simple pagina que contiene un campo de texto y un boton. La idea de la pagina es que si ...
  #1 (permalink)  
Antiguo 23/07/2013, 12:25
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 22 años, 1 mes
Puntos: 2
No puedo encontrar la solucion - Jquery

Hola a todos,

Estoy haciendo una simple pagina que contiene un campo de texto y un boton. La idea de la pagina es que si una persona escribe por ejemplo "oceano" en el campo de texto, al presionar el boton cambie el color de fondo de los divs a un color azul, lo mismo si escribe "bosque", el color de fondo de los elementos deberian cambiar a verde.
Mi problema es el siguiente, estoy usando jquery para encontrar la solucion pero suceden cosas extrañas. La primera vez que la pagina carga y escribo "oceano" los fondos cambian por un segundo al nuevo color pero despues vuelven al color original. Si escribo la palabra nuevamente, entonces el color azul se mantiene en su lugar. El otro problema es que, como vivo en suecia, si escribo la palabra por ejemplo "amor" en sueco o sea "kärlek" FF no reacciona pero si Safari y supongo que debe ser por la letra "ä". Como hago para que mi script reconozca ese tipo de letras?. Aqui les dejo el html y el js que estoy usando.

Código HTML:
<!DOCTYPE html>
<html>
	<head>
		<meta name="viewport" content="width=device-width,initial-scale=1.0" />
		<title>Finder</title>

		
		<script type="text/javascript" src="jquery.min.js"></script>
		<script type="text/javascript" src="styleChanger.js"></script>
		<link type="text/css" rel="stylesheet" href="style.css" />
	</head>
	<body>
		<div id="wrapper">
			<div id="header" class="bgColor">
				<header>
					<h1>Finder</h1>
				</header>
								<section id="searchForm">
					<form action="#">
						<input type="text" id="searchText" name="searchText" autofocus />
						<input type="submit" id="send" name="send" value="S&ouml;k" />
					</form>
				</section>
			</div>
<section id="resultsContainer">
							</section>

			
			<footer class="bgColor">
				Footer goes here
			</footer>
		</div>
				
	</body>
</html> 
Este es mi script:

Código:
$(document).ready(function () {
	$("#send").click(function() {
		var keyWord = $("#searchText").val();
		changeColor(keyWord);
		
	})
	
	function changeColor(keyWord) {
		bgColor = $(".bgColor");

		/*alert(bgColor);*/
		
		switch (keyWord) {
			case(keyWord = 'love'): 
			bgColor.removeClass("bgColor").addClass("love");
			break;
			
			case(keyWord = 'sky'): 
			bgColor.removeClass("bgColor").addClass("sky");
			
			break;
		}
	}
	
});
Las clases que aparecen en el script estan declaradas en un archivo css que se carga antes de este script.
Gracias por la ayuda que me puedan dar.
Saludos
  #2 (permalink)  
Antiguo 23/07/2013, 13:22
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 22 años, 1 mes
Puntos: 2
Respuesta: No puedo encontrar la solucion - Jquery

Creo que encontre la solucion. Quitando el <form> funciona bien.

ahora tengo un evento click que ejecuta la funcion cuando el usuario ha click en el boton, como agrego cuando el usuario presiona enter?
  #3 (permalink)  
Antiguo 23/07/2013, 13:46
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 22 años, 1 mes
Puntos: 2
Respuesta: No puedo encontrar la solucion - Jquery

ok,

asi se ve mi script ahora y funciona sin importar el tipo de letra:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     var keyWord;
  3.     var theElement = $("#headerContainer,footer");
  4.     var resultContainer = $("#resultsContainer");
  5.     $("#send").click(function() {
  6.         keyWord = $("#searchText").val();
  7.        
  8.         switch(keyWord) {
  9.             case(keyWord = 'love'):
  10.             case(keyWord = 'kärlek') :
  11.                
  12.                 theElement.removeClass().addClass("love");
  13.                 resultContainer.removeClass().addClass("loveResultContainer");
  14.                 break;
  15.                
  16.             case(keyWord = 'sky') :
  17.             case(keyWord = 'himmel') :
  18.                 theElement.removeClass().addClass("sky");
  19.                 resultContainer.removeClass().addClass("skyResultContainer");
  20.                 break;
  21.                
  22.             case(keyWord = 'forest') :
  23.             case(keyWord = 'skog') :
  24.                 theElement.removeClass().addClass("forest");
  25.                 resultContainer.removeClass().addClass("forestResultContainer");
  26.                 break;
  27.                
  28.             case(keyWord = 'summer') :
  29.             case(keyWord = 'sommar') :
  30.                 theElement.removeClass().addClass("summer");
  31.                 resultContainer.removeClass().addClass("summerResultContainer");
  32.                 break;
  33.                
  34.             case(keyWord = 'winter') :
  35.             case(keyWord = 'vinter') :
  36.                 theElement.removeClass().addClass("winter");
  37.                 resultContainer.removeClass().addClass("winterResultContainer");
  38.                 break;
  39.         }
  40.     });
  41.    
  42. });

se puede arreglar mas este codigo? Ahora solo funciona con 5 palabras en dos idiomas pero seria imposible para mi usar todas las palabras que a una persona se le pueda ocurrir.
  #4 (permalink)  
Antiguo 23/07/2013, 15:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No puedo encontrar la solucion - Jquery

Para que hagas lo mismo pero presionando la tecla ENTER, tendrías que cambiar el evento click por keypress:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#searchText").keypress(function(tecla){
  3.         if(tecla.keyCode==13){ //13 es el código ASCII de la tecla ENTER
  4.             //REALIZA TUS PROCEDIMIENTOS
  5.         }
  6.     });
  7. });

Saludos.

Etiquetas: encontrar, html, input, javascript, js, solucion
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 13:11.