سید حسین رضوی
5 سال پیش توسط سید حسین رضوی مطرح شد
5 پاسخ

عدم همکاری جاوا اسکریپت

با سلام
من یه لیست از چک باکس ها دارم به ترتیب زیر هم دیگه در دوستون که در تصویر مشاهده میکنید
تصویر
اومدم برای هر چک باکس یه کلاس یونیک گذاشتم

class="right-select rch{{ $additive->id }}"
class="right-select rchd{{ $additive->id }}"

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

if ($(this).hasClass('rch' + id)){
    if ($('.rchd' + id).is(':checked')){
        $('.rchd' + id).prop('checked', false);
    }
}
if ($(this).hasClass('rchd' + id)){
    if ($('.rch' + id).is(':checked')){
        $('.rch' + id).prop('checked', false);
    }
}

فقط همون شرط اول اجرا میشه و شرط دوم که گفتم اگه کلاس rchd + id رو داشت رو اعمال نمیکنه حتی یه پیغام گذاشتم که ببینم true یا false بر میگردونه باز هم false بر میگردونه
جالب اینجاست که توی شرط اول هم من دارم همون کلاس رو استفاده میکنم و درست کار میکنه یعنی وقتی روی rch کلیک میکنم اگه rchd تیک داشته باشه تیک رو حذف میکنه اما توی شرط دوم اصلا نمیتونه بررسی کنه که همچین کلاسی داره یا نه
به نظرتون مشکل چیه؟؟


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
2

چرا فقط از radio button استفاده نمیکنید که برای همین کار هست اگر میگید ظاهر، که اونو میشه شخصی سازی کرد ؟
اگر هم میگید نه همین رو میخوام. inspect element بگیرید ببینید در قسمت المنت‌های مورد نظر

rchd{{ $additive->id }

این دقیقا به چه شکلی هست


سید حسین رضوی
تخصص : برنامه نویس وب و طراح رابط کار...
@hossein.r.1442 5 سال پیش آپدیت شد
0

ممنون از شما
این استایلی که دارید میبینید شخصی سازی شده است و چک باکس با رادیو فرقی نداره استایل همینه، مسئله اینه که دقیقا مثل همین تصویر یکی هم سمت چپ داریم، کاربر داره کیک میسازه که دوتیکه است و سمت چپ و راست رو خودش هرجور دوست داشته باشه طعم میزنه.
برای اینکه بتونم داده ها رو به روت بعدی ارسال کنم اومدم به اینا اسم دادم به این حالت name="double[]" و name="select[]" که اون طرف به صورت آرایه آی دی به همراه سمت چپ یا راست هر افزودنی رو میگیرم به همین خاظر نمیشه از رادیو استفاده کرد.
اونی که گفتید اینسپکت بگیرم هم درست کار میکنه و اینکه همین کد توی شرط اول اجرا میشه ولی توی شرط دوم false برگشت داده میشه حتی اودم یکی رو کلاس دادم و یکی آی دی باز هم فقط شرط اول اجرا میشه
@hesammousavi


سید حسین رضوی
تخصص : برنامه نویس وب و طراح رابط کار...
@hossein.r.1442 5 سال پیش مطرح شد
0

و یه موضوع دیگه اینکه انتخاب کاربر محدوده یعنی اگه از هر سمت سه تا چک باکس رو انتخاب کنه الباقی چک باکس های اون سمت غیر فعال میشه. ولی من اگه از رادیو استفاده کنم مثلا کاربر پوره موز رو انتخاب میکنه بعد نظرش عوض بشه که پوره موز نمی خواد توی رادیو دیگه نمیتونه انتخابش رو کنسل کنه اما چک باکس این اجازه رو به ما میده
توی سایر صفحات که کاربر فقط مجاز به انتخاب یک گزینه است از رادیو استفاده کردم
@hesammousavi


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

این خط خلاصه به چیزی باید اشاره کنه

$(this).hasClass('rchd' + id)

شما این this دومی رو چک کنید log بگیرید ببینید همراش اصلا rchd هست یا خیر و اگر هم هست همون چیزی هست که شما مدنظر داشتید یا خیر


سید حسین رضوی
تخصص : برنامه نویس وب و طراح رابط کار...
@hossein.r.1442 5 سال پیش مطرح شد
0

@hesammousavi
من اینو روی رویداد کلیک چک باکس لاگ میگیرم false برگشت داده میشه اما اینجا

if ($(this).hasClass('rch' + id)){
    if ($('.rchd' + id).is(':checked')){
        $('.rchd' + id).prop('checked', false);
    }
}

وقتی این خط رو لاگ میگیرم مقدار درست به من برگشت داده میشه

$('.rchd' + id).is(':checked')

اینجا هم دقیقا از همون نام کلاس استفاده شده


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام