ugrás a tartalomhoz

OnClick esemény ENTER nyomásra???

bb0072 · 2010. Dec. 2. (Cs), 16.31
Egy érdekes problémát találtam, talán valaki hozzá tud szólni. A következő html kódban a body-hoz hozzákapcsolok egy onclick eseményt, minek hatására alert ablakban megkapom az egér coordinátáit. Ez eddig rendben. Van a html-ben egy form is, egy input mezővel és egy submit gombbal. Ha elkezdek beírni az input boxba valamit, majd entert nyomok, hogy submitoljam a formot, valami oknál fogva megtörténik az OnClick event, az alert ablakban pedig az egér coordinátáit látom, ami most 0,0.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu">

	<head>
		<title>OnClick test page</title>
		
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />

		<script type="text/javascript">

			window.onload=function() {
			document.body.addEventListener('click', function(e) {
				alert('e: '+e.pageX +","+e.pageY);
				},false);
			}
		</script>
	</head>
	<body>
		Kattints ide, hogy lásd az egér coordinátákat!
		<form action="#">
			<input type="text"/>
			<input type="submit" />
		</form>
	</body>
</html>
Az is furcsa még, hogy csak a click event viselkedik így, a mousedown vagy a mouseup nem. A kódot FF-ben és Chrome-ban néztem, mindkettőben fennáll a jelenség. Miért lehet ez, és mit lehetne csinálni, hogy ne legyen?
 
1

Ez a jelenseg a bubbling,

duplabe · 2010. Dec. 2. (Cs), 17.37
Ez a jelenseg a bubbling, azaz amikor egy esemeny tortenik barmelyik dom element-en az megtortenik a szulein is. Az osszesen. A submit gombod sokadik (igazabol masodik) szuloje a body. Ezert azon is lefut az onclick event, amire te raktal sajat fuggvenyt. Nem mindegyik esemeny ilyen, lehet azert nem igy viselkedik a mouse up/down. Nezz utana.
2

click

Poetro · 2010. Dec. 2. (Cs), 17.50
A click esemény nem csak egér kattintásra történik meg, hanem például ha linkeket billentyűzettel aktiválod (Enter/Space) illetve checkbox / radiobox aktiválásánál is. Azaz a click esemény nem csak akkor hajtódik végre amikor az egérrel kattintasz. Gondolj csak például érintőképernyőkre. Itt az érintőképernyőre bökés is click eseménynek számít, ugyanakkor általában nem váltódik ki mousemove, mivel nincsen egér.
3

Köszönöm a választ, ezt nem

bb0072 · 2010. Dec. 3. (P), 11.28
Köszönöm a választ, ezt nem tudtam. Konkrétan a body hátteret akarom kattinthatóvá tenni, ezért van onclick a body-n, és a kattintásnál figyelem az egér koordinátákat, hogy a kattintás a container diven kívül esett-e. Ha enterrel submitolnak egy formot, akkor viszont a koordináta 0,0 lesz, tehát a scriptem úgy érzi, hogy a body háttérre történt kattintás. Ez elég hülye helyzet.
4

Koordináták helyett "target"

Endyl · 2010. Dec. 3. (P), 15.50
Akkor a koordináták ellenőrzése helyett ellenőrizd, hogy az esemény eredeti célpontja a "body" volt-e vagy sem.
5

event.stopPropagation()

Crystal · 2010. Dec. 4. (Szo), 23.33