ورود

View Full Version : سوال: تغییر مقدار TextBox با اجرای Toggle



L_eskandary
یک شنبه 23 بهمن 1390, 10:14 صبح
با سلام
من سه div تو صفحه دارم هر کدام براساس انتخاب کاربر با toggle براش نمایش داده می شه .
الان برا ورود اطلاعات مشکل دارم فرض کنید کاربر اول محتویات یکی از این div ها رو پر کنه و بعد منصرف شه و بره سراغ بعدی و ...
حالا من می خوام اطلاعات آخرین div رو که محتویاتیش پر شده وارد دیتابیس کنم ولی خوب نمی دونم چه طور می تونم state مربوط به div رو شناسایی کنم ؟
حالا گفتم با عمل toggle مربوط به هر div یه مقداری رو داخل Textbox ذخیره کنم که با خوندن اون بتونم عملیات Insert رو انجام بدم ولی خوب نمی دونم چطور باید این کار رو بکنم .
من کد زیر رو نوشتم :



<script type="text/javascript">
$(document).ready(
function() {
var ptype;
$("#btnProject").click(
function() {
ptype = 1;
$("#Project").toggle(1000);
$("#TP").toggle(1000);
$('#TextBox4').val(ptype);
}
);

$("#btnDailyT").click(
function() {
ptype = 2;
$("#TP").hide(1000);
$("#Project").hide(1000);
$('#TextBox4').val(ptype);

}
);

$("#btnOtherT").click(
function() {
ptype = 3;
$("#TP").toggle(1000);
$("#Project").hide(1000);
$('#TextBox4').val(ptype);
}
);

$("#btnAttach").click(
function() {
ptype = 4;
$("#Attach").toggle(1000);

}
);


}
);
</script>

ولی خوب جواب نداد.
ممنون میشم از راهنمایی تون .

plague
یک شنبه 23 بهمن 1390, 15:28 عصر
سلام
سوالتون رو خوب نپرسیدین و کمی گیج کنندست من اونوقدری که متوجه شدم راهنمایی میکنم
اول اینکه کد اون 3 تا div رو بهتره بزارید
دوم اینکه چجوری میخاید اطلاعات رو بریزدی توی دیتابیس ؟ ایا همه این المنت ها توی یه فورم قرار دارن و قراره که بعد از تاگل کردن مثلا پست بشن به صفحه php یا اینکه میخای با ایجکس انجام بدی ؟

الان برا ورود اطلاعات مشکل دارم فرض کنید کاربر اول محتویات یکی از این div ها رو پر کنه و بعد منصرف شه و بره سراغ بعدی و ...ببینید محتویات دیو رو کسی پر نمیکنه بلکه توی دیو یه تکست باکس یا تکست آریا وجود داره و اون رو پر میکنن , از این گزشته از کجا متوجه میشید که کاربر منصرف شده ؟ آیا مثلا دکمه خاصی رو میزنه که یعنی منصرف شده یا اینکه وقتی محتویات رو پر نکنه و تاگل بعدی رو بزنه یعنی منصرف شده


حالا من می خوام اطلاعات آخرین div رو که محتویاتیش پر شده وارد دیتابیس کنم ولی خوب نمی دونم چه طور می تونم state مربوط به div رو شناسایی کنم ؟این قسمت هم مشخص نیست اول اینکه همونطور که اول پرسیدم چجوری قراره ارسال بشن به صفحه php و دیگه اینکه یعنی چی آخرین دیوی که پر شده ؟ شاید کسی 2 یا هر 3 دیو رو پر کرد

ببینید من یه راهنمایی کلی میکنم برای اینکه کدتون رو بهتر و خلاصه تر بنویسید

اول اینکه ساختار کد html رو بهینه سازی کن مثلا اینجوری بنویس


<div>
<input type="button" class="toggleBTN">
<div class="toggleDIV" style="display:none">
//اينجا تکست آريا و چيزاي ديگه رو بزار
</div>
</div>

<div>
<input type="button" class="toggleBTN">
<div class="toggleDIV" style="display:none">
//اينجا تکست آريا و چيزاي ديگه رو بزار
</div>
</div>

<div>
<input type="button" class="toggleBTN">
<div class="toggleDIV" style="display:none">
//اينجا تکست آريا و چيزاي ديگه رو بزار
</div>
</div>اینجوری میتونی همه کد جی کوئریت رو خلاصه کنی به

$(function(){
$('.toggleBTN').click(function(){
$(this).siblings('.toggleDIV').toggle();
})
})

حالا برای ارسال همونطور که بالا گفتم من نمیدونم چجوری میخای ارسال کنی ؟ ایجکس یا فرم ؟ و آیا دکمه برای ارسال داری یا میخای تاگل رو که زدن ارسال بشه ؟ و اصلا چی هست توی این دیو ها که میخای ارسال بشه ؟
خلاصه بگم که برای اینکه فهمی یه تکست آریا یا تکست فیلد خالیه کافیه کهvalue اون رو بگیری و با length چک کنی
if($('#textarea').val().length > 0 )
alert('پر است');
else
alert('خالی است');

L_eskandary
یک شنبه 23 بهمن 1390, 16:51 عصر
ممنون بخاطر وقتی که گذاشتین.
آره قبول می کنم سوالم گیج کننده بود!
ولی خوب علت اینکه مقدار textbox با کلیک دکمه ها تغییر نمی کرد فهمیدم. من از مسترپیج استفاده کردم که id کنترل ها رو تغییر میده به همین خاطر id کنترلی هم که قرار بود مقدار اون با toggle عوض شه تغییر کرده بود و این بود که با خطا مواجه می شدم .
ولی خوب برا بهینه کردن کدهام میتونم از راهنمایی تون استفاده کنم . اولین کدی هستش که با jquery نوشتم و این اشکلات هم طبیعتا وجود داره.

plague
یک شنبه 23 بهمن 1390, 18:01 عصر
خواهش میکنم
برای رفع اشکال وقتی که یه تابع کار نمیکنه
سعی کن مقادیر رو توی تابع alert یا consol log کنی اینجوری میفهمی چی کمه یا کار نمیکنه مثلا اگه دیدی مقدار نمیگیره
alert('#div').html());
یا چیز های مشابه این رو آلرت کن ببین اصلا المنت ها شناسایی میشن یا نه چون اکثر مواقع مشکل از همینه

یا اینکه میتونی از گزینه هایی مثل فایر باگ استفاده کنی که با این وجود من هنوز از روش اول استفاده میکنم خودم هم نمیدونم چرا !