ورود

View Full Version : مشکل با گیرنده رویداد در جاوا اسکریپت



white tower
جمعه 31 مرداد 1393, 19:34 عصر
تو برنامه زیر که نوشتم می خوام وقتی توی تکست باکس تایپ میشه کنترل کننده رویداد body اجرا نشه


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
function test(){
document.getElementById('sample').addEventListener ('keydown', function(event){
alert('INPUT');
}, false);
document.body.addEventListener('keydown', function(){
alert('BODY');
event.preventBubble();
}, false);
}
</script>
</head>
<body onload="test()">
<input type="text" id="sample">
</body>
</html>




می خوام که وقتی تو تکست باکس تایپ شد فقط پیام INPUT ظاهر بشه.

دانیال دزفولی
جمعه 31 مرداد 1393, 19:40 عصر
تو برنامه زیر که نوشتم می خوام وقتی توی تکست باکس تایپ میشه کنترل کننده رویداد body اجرا نشه


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
function test(){
document.getElementById('sample').addEventListener ('keydown', function(event){
alert('INPUT');
}, false);
document.body.addEventListener('keydown', function(){
alert('BODY');
event.preventBubble();
}, false);
}
</script>
</head>
<body onload="test()">
<input type="text" id="sample">
</body>
</html>




می خوام که وقتی تو تکست باکس تایپ شد فقط پیام INPUT ظاهر بشه.


میشه واضح تر توضیح بدید؟

میخوای وقتی توی اینتپوت مشخص شده تایپ شد رویداد رخ بده؟

white tower
جمعه 31 مرداد 1393, 20:06 عصر
ببین به خاطر bubbling رویداد keydown رو هم تکست باکس می گیره و هم بادی.اگر توی ساختار DOM گره والد دیگه ای هم برای INPUT بود و مدیر رویداد keydown واسش نوشته شده بود اون هم اجرا میشد.یعنی می شد مدیر رویداد INPUT بعد والد INPUT و بعد هم والد کل اینا که بادی باشه.حالا من می خوام اصلا این سلسله مراتب اجرا نشه و فقط مدیر رویداد INPUT اجرا شه.با اینکه preventBubble گذاشتم اما بازم مدیر رویداد بادی اجرا میشه.

برنامه رو یه بار اجرا کنی شاید بیشتر متوجه منظورم بشی

2undercover
شنبه 01 شهریور 1393, 06:21 صبح
به جای preventBubble باید از stopPropagation استفاده کنید.