محاسبه مقادیر یک فرم قبل از ارسال

poyaazim

Member
سلام دوستان. من یه فرم درست کردم که مقداری اطلاعات از کاربر میگیره و انهارو ایمیل میکنه. حالا میخوام قبل از اینکه کاربر فرم رو بفرسته یک مقدار محاسبه ساده در فرم انجام بشه. فرض کنید تعدادی checkbox در فرم وجود داره و هر کدوم از checkbox ها یک مقدار پیش فرض دارن (مثلا 200 تومن, 300 تومن, ... ) میخوام هرباری که یکی از checkbox ها انتخاب میشه مقدار اون checkbox به مقذار کل اضافه بشه. این عمل جمع میخوام با JavaScript انجام بشه. ممنون .
 

NabiKAZ

Well-Known Member
سلام ؛
این کد رو برای شما نوشتم، بصورت آرایه تعریف کردم که بتونید براحتی آیتم های بیشتر رو اضافه کنید.
HTML:
<html>

<head>
<script type="text/javascript">
function sum()
{
	var totalprice = 0;
	for (i=1; i<=3; i++)
	{
		if (document.getElementById('price['+i+']').checked == true)
		{
			totalprice = totalprice + eval(document.getElementById('price['+i+']').value);
		}
	}
	document.getElementById('totalprice').value = totalprice ;
}
</script>
</head>

<body>
<form>

<input type="checkbox" id="price[1]" value="10" onclick="sum()">book (10$)<br>
<input type="checkbox" id="price[2]" value="20" onclick="sum()">computer (20$)<br>
<input type="checkbox" id="price[3]" value="30" onclick="sum()">car (30$)<br>
total price: <input type="text" id="totalprice" value="0" size="10" disabled> $

</form>

</body>

</html>

موفق باشید
نبی
 
آخرین ویرایش:

poyaazim

Member
نبی جان, واقعا ممنونم عزیز. همون چیزیه که دنبالش بودم, فقط یه چیزی, checkbox هایی که درست کردی اسم ندارن, این موقع ارسال فرم به ایمیل مشکلی ایجاد نمیکنه? برای این کار من از PHP استفاده میکنم. بازم ممنون.
 

poyaazim

Member
نبی جان, تنها مسئله ای که هست اینه که موقع ارسال فرم مقدار total بخاطر اینکه disabled هست به ایمیل فرستاده نمیشه, وقتی که enable میکنمش فرستاده میشه, راهی به نظرت نمیاد که در حالت disabled هم فرستاده بشه? من تنها چیزی که به فکرم رسید این بود که این باکس رو hidden کنم.
 

NabiKAZ

Well-Known Member
نبی جان, واقعا ممنونم عزیز. همون چیزیه که دنبالش بودم, فقط یه چیزی, checkbox هایی که درست کردی اسم ندارن, این موقع ارسال فرم به ایمیل مشکلی ایجاد نمیکنه? برای این کار من از PHP استفاده میکنم. بازم ممنون.
سلام ، خواهش میکنم...

حق با شماست، اسم فیلد ها رو اینطور انتخاب کن:
کد:
name="price[1]"
name="price[2]"
name="price[3]"
و الی آخر...

بدین ترتیب در php متغییر price$ به صورت آرایه ظاهر میشه که براحتی میتونید به وضعیت هر یک از checkbox ها دسترسی داشته باشید.

موفق باشید
نبی
 
آخرین ویرایش:

NabiKAZ

Well-Known Member
درسته.
یک راهش اینه که دوتا textbox بزاری، یکی رو مخفی برای ارسال و یکی نمایان اما غیرفعال جهت مشاهده کاربر.

یک راه دیگر هم اینه که در لحظه submit فیلد مربوطه فعال بشه و سپس فرم submit بشه.
برای اینکار این function رو اضافه میکنید:
HTML:
function dosubmit()
{
	document.getElementById('totalprice').disabled = false;
}
و تگ form رو بدین صورت مینویسید:
HTML:
<form  action="..." method="post" onsubmit="dosubmit();">

تشکر
نبی
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا