PDA

View Full Version : وقتی یه radio button انتخاب میشه چه رویدادی رخ میده؟!!



saeidejafari
دوشنبه 11 آذر 1387, 09:39 صبح
سلام بر همگی،
من یه radio button دارم که می خوام وقتی انتخاب شد یه combo box رو فعال کنم و وقتی از انتخاب خارج شد اون combo box رو غیر فعال کنم.
من برای رویداد onselect تابع رو صدا زدم ولی کار نمی کنه؟

<input name="Page_Order" type="radio" value="After" class="radio" onSelect="return Enable_After_Order()">

emad_67
دوشنبه 11 آذر 1387, 10:33 صبح
از رویداد onclick استفاده کن.

saeidejafari
دوشنبه 11 آذر 1387, 11:05 صبح
رویداد onclick درست جواب نمیده چون دفعه اولی که روی radio button کلیک میشه، دکمه رادیویی انتخاب میشه و اون تابع اجرا میشه،برای بار دوم که روی دکمه کلیک میشه وضعیت انتخابی که تغییری نمی کنه،همچنان دکمه رادیویی انتخاب هست ولی تابع صدا زده میشه.

emad_67
دوشنبه 11 آذر 1387, 11:29 صبح
خوب از onchange استفاده کن.

saeidejafari
دوشنبه 11 آذر 1387, 12:23 عصر
با onchange هم درست نشد.
اینجوری میشه ببینید:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" type="text/javascript">
function Enable_Befor_Order(){
if(document.getElementById('Befor').disabled)
document.getElementById('Befor').disabled=false;
else
document.getElementById('Befor').disabled=true;
return true;
}
function Enable_After_Order(){
if(document.getElementById('After').disabled)
document.getElementById('After').disabled=false;
else
document.getElementById('After').disabled=true;
return true;
}
</script>
</head>

<body dir="rtl">
<input name="Page_Order" type="radio" value="Befor" onChange="return Enable_Befor_Order()" class="radio">
&nbsp;قبل از
<select name="Befor" id="Befor" class="input_text" disabled onChange="return displayChild1OrderBefor();">
<option value=""></option>
</select>
<input name="Page_Order" type="radio" value="After" class="radio" onChange="return Enable_After_Order()">
بعد از
<select name="After" id="After" class="input_text" disabled onChange="return displayChild1OrderAfter();">
<option value="{$ParentPages[Indexer].p_id}" ></option>
</select>
</body>
</html>

saeidejafari
دوشنبه 11 آذر 1387, 12:47 عصر
فکر می کنم event برای select باشه
میشه واضح تر بگید؟

saeidejafari
دوشنبه 11 آذر 1387, 13:07 عصر
<input type="radio" onselect="" />
لطفا پست اولو بخونید.

emad_67
دوشنبه 11 آذر 1387, 14:25 عصر
توی ie رویداد onchange بعد از برداشته شدن focus از روی کنترل فراخوانی میشه( دیونست دیگه چیکار کنیم) برای حل این مشکل میتونی علاوه بر رویداد onchange رویداد onclick رو هم مقدار دهی کنی و توی اون focus رو از روی کنترل برداری. همچنین لازم نیست دیگه توی بدنه های تابع ها else رو قرار بدی، مستقیما باید disable کنی کنترل رو دیگه. کدت رو اصلاح کردم:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" type="text/javascript">
function Enable_Befor_Order(){
if(document.getElementById('Befor').disabled)
document.getElementById('Befor').disabled=false;

document.getElementById('After').disabled=true;
return true;
}
function Enable_After_Order(){
if(document.getElementById('After').disabled)
document.getElementById('After').disabled=false;

document.getElementById('Befor').disabled=true;
return true;
}
</script>
</head>

<body dir="rtl">
<input name="Page_Order" type="radio" value="Befor" onChange="return Enable_Befor_Order();" onclick="this.blur();" class="radio">
&nbsp;قبل از
<select name="Befor" id="Befor" class="input_text" disabled onChange="return displayChild1OrderBefor();">
<option value=""></option>
</select>
<input name="Page_Order" type="radio" value="After" class="radio" onChange="return Enable_After_Order()" onclick="this.blur();">
بعد از
<select name="After" id="After" class="input_text" disabled onChange="return displayChild1OrderAfter();">
<option value="{$ParentPages[Indexer].p_id}" ></option>
</select>
</body>
</html>

Exception
دوشنبه 11 آذر 1387, 16:02 عصر
یه چیز یکمی بی ربط! چرا برای متن های کنار RadioButton از Label استفاده نمیکنی؟ اینجوری که درست کردی خیلی اعصاب خورد کنه که کاربر مجبوره حتما رو خود دایره کلیک کنه!
اینجوری بهتر میشه:

<input name="Page_Order" id="Page_Order" type="radio" value="Befor" onChange="return Enable_Befor_Order();" onclick="this.blur();" class="radio">
<label for="Page_Order">قبل از</label>

Chabok
دوشنبه 11 آذر 1387, 17:21 عصر
ظاهرا بهترین رویداد همون onclick است که همیشه اجرا میشه .

یک تابع برای onclick همه رادیو ها بزارید و توی تابع ، وضعیت همشون رو چک کنید .
هر کدوم انتخاب شده بود عمل مربوطه رو انجام بدین .

saeidejafari
سه شنبه 12 آذر 1387, 13:12 عصر
سلام دوستان،
از همگی ممنون.
من کدی که emad_67 (http://barnamenevis.org/forum/member.php?u=35031) رو استفاده کردم.


یه چیز یکمی بی ربط! چرا برای متن های کنار RadioButton از Label استفاده نمیکنی؟ اینجوری که درست کردی خیلی اعصاب خورد کنه که کاربر مجبوره حتما رو خود دایره کلیک کنه!

واقعا ممنون دوست عزیز.


ظاهرا بهترین رویداد همون onclick است که همیشه اجرا میشه .
چرا؟مگه کد emad_67 (http://barnamenevis.org/forum/member.php?u=35031) چه مشکلی داره؟


چرا خودت رو اذیت می کنی کوئری بفرست و ری دایرکت کن
میشه واضح تر بگید؟چیکار کنم؟

Chabok
سه شنبه 12 آذر 1387, 19:14 عصر
چرا؟مگه کد emad_67 (http://barnamenevis.org/forum/member.php?u=35031) چه مشکلی داره؟

من که نگفتم کد دوست عزیزم emad_67 (http://barnamenevis.org/forum/member.php?u=35031) مشکلی داره .
ولی شاید اگر همه رادیوها یک تابع رو اجرا کنند و داخل اون تابع همه وضعیت ها چک شود یکم جمع و جور تر بشه .

این تاپیک (http://barnamenevis.org/forum/showthread.php?t=126376) هم رو یه نگاهی بندازید .

موفق باشید . خدانگهدار

RoostaYeBekr
سه شنبه 12 آذر 1387, 21:48 عصر
با سلام
:لبخند:
من یک برنامه برای همین کاری که خواستید ، ساختم و فایلش را برایتان فرستادم. ( البته این رو هم بگم که به سایر پست ها توی این تاپیک دقت نکردم )
ضمنا اگر که روی قضیه ی رویداد ها در HTML ، اطلاعات بیشتری می خواهید ، می توانید به لینک زیر مراجعه کنید :
http://barnamenevis.org/forum/showthread.php?t=133777