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/>
امیدوارم متوجه این قضایا شده باشید
و بتونید جواب من رو بدید
با تشکر
من یک 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/>
امیدوارم متوجه این قضایا شده باشید
و بتونید جواب من رو بدید
با تشکر