مشکل در طراحی یک confirm

meisamphp

New Member
سلام ..

دوستام من یه قسمت وب سایتم می خوام یه confirm درست کنم به صورت کاملا custom ..

کد های زیر رو برای confitm برای پاک کردن یه سطر از دیتا بیس نوشتم ..

[JSS]
function deletion (s,id,k,d,sn){
if ( confirmbox('Are You Sure ?') == true ){
// Deletion By Ajax
}
}
function confrmbox (msg){
$('#contex').html(msg);
$('#lightbox-confirm').fadeIn(100);
$('#conok').click(function(){
$('#lightbox-confirm').fadeOut(100);
return true;
});
$('#concancel').click(function(){
$('#lightbox-confirm').fadeOut(100);
});
}
[/JSS]

[HTMLS]<html>
<div id="lightbox-confirm">
<div id="context" class="right" style="width:100%; height:30px; font-weight:bolder; font-size:11px; text-align:center ; line-height:1em" dir="rtl"></div>
<div id="conok" class="right" style="height:40px; width:50%; text-align:center">salam</div>
<div id="concancel" class="right" style="height:40px; width:50%; text-align:center">salam</div>
</div>[/HTMLS]


اما وقتی روی ok کلیک میکنم هیچ اتفاقی نمی افته ..

ممنون میشم کمکم کنید ..




یاعلی ..
 

meisamphp

New Member
سلام ..
من میخواستم از این تابع confirmbox جاهای دیگه هم بجز deletion استفاده کنم ..


چطوری میتون فانکشنمو تو انتظار یه مقدار بازگشتی نگه دارم ؟؟


کد زیر رو هم امتحان کردم جواب داد اما یه مشکل داشت ..
کد:
function deletion (s,id,k,d,sn){
      if ( confirmbox('Are You Sure ?') , function (data){
           If ( data == true ) {
             // Deletion By Ajax
            }
       })
}
function confirmbox (msg,ret){
     $('#contex').html(msg);
     $('#lightbox-confirm').fadeIn(100);
     $('#conok').click(function(){
           $('#lightbox-confirm').fadeOut(100);
           return ret(true);
    });
    $('#concancel').click(function(){
          $('#lightbox-confirm').fadeOut(100);
    }); 
}
 
 <html>
<div id="lightbox-confirm">
<div id="context" class="right" style="width:100%; height:30px; font-weight:bolder; font-size:11px; text-align:center ; line-height:1em" dir="rtl"></div>
<div id="conok" class="right" style="height:40px; width:50%; text-align:center">salam</div>
<div id="concancel" class="right" style="height:40px; width:50%; text-align:center">salam</div>
</div>


در کل صفحه جوری هست که جلوی هر رکورد یه دکمه هست و وقتی کاربر روی دکمه کلیک میکنه اطلاعات مربوط به اون رکورد فرستاده میشه به فانکشن deletion ..
مشکل اینجاست وقتی که کاربر برای بار اول ok رو میزنه عملیات delet انجام میشه ,, اما وقتی برای بار دوم کلیک میکنه تابع deletion از قسمت true به بعد ۲بار اجرا میشه و بار اول یه بار دیتاهای قبلی رو میفرسته به ajax و بعد دیتاهای مربوط به سری جدید رو ،، و همین طور برای بار سوم که کاربر کلیک میکنه فانکشن deletion سه بار اجرا میشه ..


به نظر شما مشکل کجاست ؟؟


مرسی که کمکم میکنید ..




یاعلی ..
 

meisamphp

New Member
سلام دوستان عزیز ..

سئوال رو اصلاح میکنم ..

من کد زیر رو نوشتم .. کل کد به همین شکل هستش ..
کد:
<script type="text/javascript" src="[URL]http://code.jquery.com/jquery-1.9.1.js"></script[/URL]> 
<script>
function deletion(){
      confirmbox(function(data){
          alert (data);
      });
}
function confirmbox(ret){
   $('#confirmbody').fadeIn();
   $('#btnok').click(function(){
        $('#confirmbody').fadeOut();
        return ret(true);
   })
   $('#btnko').click(function(){
        $('#confirmbody').fadeOut();
        return ret(false);
   })
}
</script>
<html>
<div id="confirmbody" style="display:none;">
<input class="button" id="btnok" type="submit" value="ok" style="width:100px ; height:40px;">
<input class="button" id="btnko" type="submit" value="ko" style="width:100px ; height:40px;">
</div>
<input class="button" id="bt" onclick="deletion()" type="submit" value="run" style="width:100px ; height:40px;">

وقتی اولین بار روی دکمه ها کلیک میکنم همه چی درست هستش ،، اما برای بار دوم پیغام alert دوبار اجرا میشه و بار سوم سه بار ؟؟ و ...


ممنون میشم کمکم کنید .. مرسی




یاعلی ..
 
آخرین ویرایش:

farik

Well-Known Member
باسلام..
خوب دلیلش اینه که شما با هر بار اجرا تابع دارین یک رویداد جدید به دکمه attach میکنین...شما باید اینکار رو فقط یکبار انجام بدین و بعد detach کنینش...(این اتچ و دی اتچ تو خود js هست..تو jquery باید از توابعی مثل unbind استفاده کنین).
نمونه کد اصلاح شده:
[HTMLS]
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script>
function deletion(){
$('#btnko').off('click');
$('#btnok').off('click');
confirmbox(function(data){
alert (data);
});
}
var okfnc,kofnc;
function confirmbox(ret){
$('#confirmbody').fadeIn();
okfnc=function(){
$('#confirmbody').fadeOut();
return ret(true);
};
$('#btnok').bind('click',okfnc)
kofnc=function(){
$('#confirmbody').fadeOut();
return ret(false);
};
$('#btnko').bind('click',kofnc)
}
</script>
<div id="confirmbody" style="display:none;">
<input class="button" id="btnok" type="submit" value="ok" style="width:100px ; height:40px;">
<input class="button" id="btnko" type="submit" value="ko" style="width:100px ; height:40px;">
</div>
<input class="button" id="bt" onclick="deletion()" type="submit" value="run" style="width:100px ; height:40px;">
</body>
</html>

[/HTMLS]
موفق باشید..
 

جدیدترین ارسال ها

بالا