PDA

View Full Version : سوال: مشکل با ایجاد بخش نظر دهی در سایت



idocsidocs
پنج شنبه 21 شهریور 1392, 00:04 صبح
توی بخش نظرات سایت می خوام کاربرها بتونن پاسخ هر نظر رو بدن.

برای این کار باید به کمک جی کوئری یه فرم ایجاد کنم و بعد از ثبت نظر فرم رو حذف کنم. الان از این کد استفاده می کنم اما فرم و دکمه ارسال کار نمی کنه و مجبور می شم فرم رو حذف کنم و یه لینک ایجاد کنم

بنظرتون مشکل چیه؟

وقتی کاربر رو دکمه پاسخ کلیک می کنه از این کد استفاده می کنم:
$("#reply").live('click', function() {
کدهای ایجاد فرم:

$(this).append('
<div>
<p>loading</p>
<form id="form1">
<textarea name="msg"></textarea>
<input name="submit" type="submit" value="send" />
</form>
</div>
');

کد بالا رو توی خط قرار می دم ولی برای خوانایی اینجا از هم جداشون کرد

Javidhb
پنج شنبه 21 شهریور 1392, 00:39 صبح
چون فرم رو بعدا از لود شدن اولیه صفحه، میسازید و بهش اضافه میکنید.. jquery نمیتونه پیداش کنه.
باید از


$(document).on('click', '#reply', function(){
استفاده کنید.

idocsidocs
پنج شنبه 21 شهریور 1392, 01:04 صبح
چون فرم رو بعدا از لود شدن اولیه صفحه، میسازید و بهش اضافه میکنید.. jquery نمیتونه پیداش کنه.
باید از


$(document).on('click', '#reply', function(){
استفاده کنید.
الان فرم بدون مشکل کار می کنه اما بعد از ثبت نظر نمی تونم فرم رو حذف کنم.

برای حذف کردن المنتهایی که با جی کوئری ساخته شدن باید چیکار کرد؟ البته روشی که قبلا معرفی کرده بودید رو استفاده کردم اما فایده نداشت.

Javidhb
پنج شنبه 21 شهریور 1392, 02:42 صبح
باید از انتخابگرهایی مانند parent و children استفاده کنید...

یه چیزی شبیه این:

$(this).parent('div').first().remove();

idocsidocs
پنج شنبه 21 شهریور 1392, 11:04 صبح
$(this).parent('div').first().remove();
از همین کدها استفاده می کنم ولی نتیجه نمی گیرم

چطور می تونم یه فیلد فرم رو serialize کنم؟ یعنی بدون اینکه فرم ایجاد کنم یه فیلد متنی بخدارم و وقتی کاربر روی لینک کلیک کرد فقط همون یک فیلد رو serialize کنم و برای سرور بفرستم؟

یعنی کد رو به این صورت تغییر بدم و فرم حذف شه:

$(this).append('
<div>
<p>loading</p>
<textarea name="msg"></textarea>
<input name="submit" type="submit" value="send" />
</div>
');

Javidhb
پنج شنبه 21 شهریور 1392, 13:37 عصر
اینو با کدهای خودتون نوشتم ... بدون مشکل کار میکنه و کافیه فقط درخواست post یا ajax یا get رو بهش اضافه کنید..



<div>
<p>nazaaaaarrrrrr</p>
<button id="reply">reply</button>
</div>

<script type="text/javascript">
$(document).on('click', '#reply', function(){
$(this).parent('div').first().append('<div><p>loading</p><textarea name="msg"></textarea><input name="submit" type="submit" value="send" /></div>');
});


$(document).on('click', ':input[name="submit"]', function(e){
e.preventDefault();
var msg = $('textarea[name="msg"]').serialize();

//add ajax or ... here

$(this).parent('div').first().remove();
});
</script>

idocsidocs
پنج شنبه 21 شهریور 1392, 21:25 عصر
کدی که دیشب استفاده می کردم تگ p تگ والد بود ولی موقع درج کدها توی انجمن تگهای اضافه رو حذف کردم و به همین دلیل تگ div تگ والد نمایش داده شد!

وقتی توی سورس سایت خودم تگ والد رو به div تغییر دادم مشکل برطرف شد!

می تونید بگید دلیل این مضوع چیه و به چه دلیل جاوا اسکریپت این تگها رو متفاوت از هم پردازش می کنه؟