Foros del Web » Programando para Internet » Javascript »

Eventos en javascript no funcionan

Estas en el tema de Eventos en javascript no funcionan en el foro de Javascript en Foros del Web. Buenas. Estoy creando una web en JSP. En el resto de paginas me funcionan correctamente los eventos de javascript (onclick) pero en esta no entiendo ...
  #1 (permalink)  
Antiguo 14/12/2010, 11:07
Dr0gNan
Invitado
 
Mensajes: n/a
Puntos:
Eventos en javascript no funcionan

Buenas. Estoy creando una web en JSP.

En el resto de paginas me funcionan correctamente los eventos de javascript (onclick) pero en esta no entiendo porque no se procesan al redirigirlos a una funcion javascript.

Es decir, poniendo por ejemplo: onchange="javascript:alert('Hola');" funciona correctamente.

En cambio si hago lo siguiente no funciona: onchange="Saludar('Hola');"

Pongo el codigo, he pensado que igual algo de la pagina le esta fastidiando.

Código HTML:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="../css/EstiloBase.css" />
<title>M&M Informática S.L. .:. Nuevo producto .:.</title>
<script src="../js/jquery.js" type="text/javascript"></script>
<script src="../js/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript"><!--
$().ready(function() {
	$("#frmNuevoProducto").validate(
	{
		rules: {
			txtNombre: {
				required: true
			}
		},
		messages: { 
			txtNombre: {
            	required: " El campo 'Nombre' es obligatorio."
			}
		} 
	});
});
// -->
</script>
</head>
<body>
	<form id="frmNuevoProducto" name="frmNuevoProducto" method='post' action='../AccionesProductoServlet'>
		<table>
			<tr>
				<td class=tabledataFormat>
					<label for="lblPrecio">Precio:</label></td>
				<td class=tabledataFormatValues>
					<input name="txtPrecio" type="text" class="numbertext" onchange="ShowFinalPrice();" id="txtPrecio" size="50" value="0.00"></td>
			</tr>
			<tr>
				<td class=tabledataFormat>
					<label for="lblDescuento">Descuento (%):</label></td>
				<td class=tabledataFormatValues>
					<input name="txtDescuento" type="text" class="numbertext" onchange="ShowFinalPrice();" id="txtDescuento" size="50" value="0.00"></td>
			</tr>
			<tr>
				<td class=tabledataFormat>
					<label for="lblImpuesto">Impuesto (%):</label></td>
				<td class=tabledataFormatValues>
					<select name="cmbImpuesto" id="cmbImpuesto" class="numbertext" size="1" onchange="ShowFinalPrice();" style="width: 320px">
						<option value="0">-- Ninguno --</option>
						<option value="4">IVA 4%</option>
						<option value="8">IVA 8%</option>
						<option value="18">IVA 18%</option>
					</select>
				</td>
			</tr>
			<tr>
				<td class=tabledataFormat>
					<label for="lblPrecioFinal">Precio final:</label></td>
				<td class=tabledataFormatValues>
					<input name="txtPrecioFinal" type="text" readonly class="numbertext" id="txtPrecioFinal" size="50" value="0.00" style="border-width: 0px"></td>
			</tr>
		</table>
		<script type="text/javascript" language="javascript">
		function ShowFinalPrice()
		{
			alert('hola');
			var valorPrecio = document.getElementById('txtPrecio').value;
			var valorDescuento = document.getElementById('txtDescuento').value;
			var valorImpuesto = document.getElementById('txtImpuesto').value;
			
			float descuento = (valorPrecio * valorDescuento)/100 - valorPrecio;
			float impuesto =  (valorPrecio * valorImpuesto)/100 + valorPrecio;
			float precioFinal = valorPrecio + descuento + impuesto;
			alert(precioFinal);
			
			document.getElementById('txtPrecioFinal').value = precioFinal;
		}
		</script>
	</form>
</body>
</html> 
Por mas pruebas que he hecho he comprobado que no llega al alert de la funcion javascript.

Gracias.
  #2 (permalink)  
Antiguo 14/12/2010, 11:12
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 13 años, 7 meses
Puntos: 59
Para que funcione onchange="Saludar('Hola');" tiene que existir la función Saludar, yo veo que sólo existe la función ShowFinalPrice().

Saludos
__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111
  #3 (permalink)  
Antiguo 14/12/2010, 13:03
Dr0gNan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eventos en javascript no funcionan

Sí, la funcion existe. En el ejemplo me ha faltado poner debajo esto:

<script>
function Saludar(texto)
{
alert(texto);
}
</script>

En el ejemplo aparece la llamada a la funcion javascript asi como la propia funcion (ShowFinalPrice).

Un saludo.
  #4 (permalink)  
Antiguo 14/12/2010, 14:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Eventos en javascript no funcionan

no tiene nada mal el ejemplo de onchange="Saludar('Hola');". de todos modos, revisa la consola de errores para determinar la causa del problema.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 15/12/2010, 11:19
Dr0gNan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eventos en javascript no funcionan

He revisado la consola de errores y no hay ningun error. Como veis en el codigo he puesto alerts para comprobar si entra en la funcion Javascript y al parecer no entra.

En esta pagina he añadido el validator de JQuery, ¿puede ser este el que impida que funcione el onChange?

Etiquetas: eventos, jsp, onchange
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 00:51.