PDA

View Full Version : سوال: یک dialog box ساده نوشتم که چندتا مشکل داره ، راهنمایی کنید ممنون میشم



alismith
شنبه 22 مرداد 1390, 20:25 عصر
سلام

من یک dialog box ساده نوشتم که چندتا مشکل داره ، راهنمایی کنید ممنون میشم

اول کدها رو قرار میدم :

HTML


<input type="button" class="dialogButton" name="myDialog1" value="show dialog"/>
<br/>
<input type="button" class="dialogButton" name="myDialog2" value="show dialog"/>

<div id="myDialog1">
<div name="dialog">
<div name="title">Dialog Box Title1:</div>
<div name="content"><br/>Content:<br/>write anything<br/></div>
<div name="foot">footer</div>
</div>
</div>

<div id="myDialog2">
<div name="dialog">
<div name="title">Dialog Box Title2:</div>
<div name="content"><br/>Content:<br/>write anything<br/></div>
<div name="foot">footer</div>
</div>
</div>



CSS

div[name=dialog]{

position: absolute;
display: none;
width: 550px;
height: 40px;
top: 20%;
left: 50%;
manrgin-top: -20px;
margin-left: -275px;

-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
-khtml-border-radius: 4px;
border-radius: 4px;

border: 2px solid #000;

background: #FFF;

}

div[name=dialog] div[name=title]{

width: 550px;
height: 40px;;
font-family: Arial;
font-weight: bold;
font-size: 18px;
color: #000;

background: -moz-linear-gradient(top,#FFF,#FBFBFB);
background: -webkit-gradient(linear, center top, center bottom, from(#FFF), to(#c1c1c1));
background: -o-linear-gradient(top,#FFF,#c1c1c1);
filter: progid:DXImageTransform.Microsoft.gradient(startCo lorstr='#FFFFFF', endColorstr='#c1c1c1');

}

div[name=dialog] div[name=content]{

width: 550px;
height: auto;
font-family: Arial;
font-size: 11px;
color: #000;

}

div[name=dialog] div[name=foot]{

width: 550px;
height: 30px;
font-family: Arial;
font-weight: bold;
font-size: 11px;
color: #000;
border-top: 1px solid #c1c1c1;

}



JAVASCRIPT

$(document).ready(function(){
var i = 0,dialog,c_dialog='',id_holder;
$(document).delegate(".dialogButton","click",function(){
id_holder = $(this).attr('name');

if(c_dialog==''){
c_dialog = id_holder;
dialog(c_dialog);
}else{

if(c_dialog != id_holder){

dialog(c_dialog);


c_dialog = id_holder;
dialog(c_dialog);

}else{

dialog(c_dialog);

}

}





function dialog(id_dialog){

var id = id_dialog;

dialog = $("#"+id).find("div[name=dialog]")
dialog.fadeToggle("slow");
(dialog.css("height")=='40px')? dialog.css("height","auto") : dialog.css("height","40px");
var content = dialog.find('div[name=content]');

if(i==0){

content.slideUp("fast");
content.slideDown("slow");
i=1;
}else{

content.slideUp("slow");
i=0;

}

var data = dialog.find('div[name=foot]').html();
var Ndata = data.replace("CLOSE"," ");
var strL = Ndata.length;
strL = parseInt(strL);
if(strL.length>5){
strL = strL-6;
Ndata = Ndata.substring(0,strL);
}
dialog.find('div[name=foot]').html(Ndata+"<br/>CLOSE");


$(dialog.find('div[name=foot]')).click(function(){


dialog(id);

});


}





});




});



اگر لطف کنید و یکم به بخش html و javascript توجه کنید

راحتتر می تونم شما رو متوجه مشکلم بکنم


اول بگم کلا این کدها کارشون چیه :

ببینید اینجا قرار هست که هر وقت button کلیک میشه divی که id اون رو در مشخصه name کلید نوشتیم نمایش داده بشه و اگر دوباره روی همان button کلیک کردیم بسته بشه و اگر روی button دیگری کلیک کردیم اون div اول بسته بشه و divی که id اون در مشخصه name کلید دوم هست نمایش داده بشه و این عمل همینطور ادامه پیدا کنه و محدودیتی در تعداد مثلا dialogBox وجود نداشته باشه و در نهایت قرار هست به divی که name اون foot هست یک مطلبی اضافه بشه و با کلیک روی اون dialogBox بسته بشه

خوب حالا مشکلات چی هستند :

روشی که من پیاده سازی کردم برای نمایش هر dialogBox یعنی نمایش و پنهان کردن هر کدام مطابق با مقایسه id اونها با هم درست کار نمیکنه و نمیدونم دلیلش چی هست؟

من روشی رو پیاده سازی کردم تا کلمه CLOSE در هربار نمایش dialog در divی که نام foot داره نمایش داده بشه و با کلیک برروی اون div دوباره تابع مورد نظر با id اون divی که کل dialog رو دربر گرفته فراخوانی کنه تا dialog بسته بشه
اما تابع اجرا نمیشه و مشکل این هست که قبل کلمه CLOSE یک <br/> گذاشتم و با اینکه خاستم این کلمه و <br/> رو در هربار اجرای تابع پاک کنم و دوباره کلمه نوشته بشه ولی با این حال فقط کلمه پاک میشه نه <br/>

امیدوارم متوجه این قضایا شده باشید
و بتونید جواب من رو بدید

با تشکر

hossin.esm
شنبه 29 مرداد 1390, 13:42 عصر
سلام
یک مشکل این هست که یک متغییر در تابع dialog تعریف کردید که با نام خود تایع یکسان هست (dialog) متغییر را تغییر نام دهید مشکل حل میشه

alismith
یک شنبه 30 مرداد 1390, 19:36 عصر
سلام

دوست عزیز خیلی ممنون که تذکر دادید ، اما هنوز مشکل حل نشده اگر خودتون لطف کنید یک بار امتحان کنید متوجه میشید

واقعا ممنون میشم :قلب:

با تشکر