با تشكر از جوابايي كه ندادين...
خودم جوابشو پيدا كردم.
ميذارمش اينجا اگه كسي اين مشكل رو داشت خودش حلش كنه و...
منبع اين مقاله مفيد:
تعيين اعتبار فرم قبل از ارسال
خوب حالا اصل مطلب
تعيين اعتبار فرم قبل از ارسال
امروزه صفحات حاوي فرم را در بسياري از سايت ها (حداقل براي ارسال پست الکترونيک براي مديريت سايت) مي توان مشاهده نمود. بسياري از اين فرمها داراي قوانيني در ارتباط با اطلاعات ورودي مي باشند (براي مثال لزوم وارد کردن بعضي از اطلاعات و يا اطمينان از صحيح بودن فرمت پست الکترونيکي و ...). براي تعيين اعتبار اطلاعات وارد شده دو راه حل کلي وجود دارد.
١) استفاده از زبانهاي Server Side مانند PHP يا ASP
٢) استفاده از زبانهاي Client Side مانند JavaScript
تفاوت اصلي در اين دو حالت در زمان تعيين اعتبار فرم مي باشد به اين معنا که در صورت استفاده از زبانهاي Server Side ابتدا فرم به صفحه مقصد (که در action مشخص شده است) ارسال خواهد شد و بعد از آن اعتبار اطلاعات وارد شده مورد بررسي قرار مي گيرد. اما در صورتي که براي اين کار از زبانهاي Client Side استفاده شود، تعيين اعتبار قبل از ارسال اطلاعات و بر روي کامپيوتر شخص بازديد کننده (Client) انجام خواهد شد و در صورت درستي اطلاعات فرم به صفحه مقصد ارسال خواهد شد. بديهي است که تعيين اعتبار بر روي کامپيوتر Client (و با استفاده از زبانهاي Client Side) از بسياري از جهات (بخصوص: صرفه جويي در وقت) بسيار بهتر از استفاده از زبانهاي Client Side مي باشد. البته به اين نکته نيز بايد توجه داشت که انجام اين عمل با استفاده از زبانهاي Client Side همواره ميسر نيست براي مثال در صورتي که در سيستم ثبت نام کاربران بخواهيم از وجود و يا عدم وجود نام کاربري (Username) انتخاب شده توسط شخصي (در هنگان ثبت نام) اطلاع حاصل کنيم، مجبور خواهيم بود تا با استفاده از زبانهاي Server Side و اتصال به بانک اطلاعاتي مربوط به کاربران اين کار را انجام دهيم. اما در همين حالت نيز بعضي از موارد در تعيين اعتبار فرم را مي توان با استفاده از زبانهاي Client Side انجام داد. (براي مثال، وارد شدن نام کاربري و کلمه عبور)
در اين مقاله مي خواهيم به نحوه انجام اين کار از طريق زبانهاي Client Side بپردازيم. قبل از توضيح در ارتباط با چگونگي انجام اين کار به مثال زير توجه نماييد.
در اين مثال فرض بر آن است که کلمه عبور و تاييد آن از کاربر توسط يک فرم گرفته مي شود، فرض مي کنيم که براي تعيين اعتبار اطلاعات وارد شده (کلمه عبور و تاييد آن حتما بايد وارد شوند و مقدار آنها بايد با هم برابر باشد) از يک زبان Client Side مانند JavaScript استفاده مي شود.
HTML:
<html>
<head>
<title>Checking form with JavaScript </title>
<script language="javascript" type="text/javascript">
function CheckForm(formID){
//Checking for password value
if (formID.password.value == "") {
alert("please enter password");
formID.password.focus();
return false;
}
//Checking for confirm value
if (formID.confirm.value == "") {
alert("please enter password confirm");
formID.confirm.focus();
return false;
}
//Checking for password and confirm (must be equal)
if(formID.password.value != formID.confirm.value) {
alert("password & confrim did not match");
formID.password.focus();
return false;
}
return true
}
</script>
<style type="text/css">
<!--
body, table, form, input { font-family: verdana, arial; font-size: 12px; }
-->
</style>
</head>
<body>
<center>
<form method="post" action="destination.php" onsubmit="return CheckForm(this)">
<table border="0" cellpadding="2" cellspacing="0" width="300px">
<tr><td align="right" width="20%">Password: </td><td align="left" width="80%"><input type="password" name="password"></td></tr>
<tr><td align="right" width="20%">Confirm: </td><td align="left" width="80%"><input type="password" name="confirm"></td></tr>
<tr><td align="center" colspan="2"><input type="submit" value="SUBMIT"></td></tr>
</table>
</form>
</center>
</body>
</html>
با کمي دقت در اين مثال مي توان متوجه اصول انجام اين کار در صفحه فوق شد. يک تابع (با نام CheckForm در اين مثال) وجود دارد که ورودي آن يک Form Object مي باشد و خروجي آن نيز به صورت true (اطلاعات وارد شده معتبر است) يا false مي باشد. اين تابع در event ثبت فرم (onsubmit) با مقدار ورودي this (اشاره به فرمي که تابع را فراخواني ميکند) فراخواني شده و مقدار بازگشتي آن به فرم ارجائ داده مي شود. در صورتي که اين مقدار بازگشتي true باشد، ارسال فرم به صفحه مقصد (در اين مثال: destination.php) ادامه پيدا مي کند و در غير اين صورت عمل ارسال انجام نمي شود.
بنابر اين به طور کلي مي توان نکات مهمي که در تعيين اعتبار فرم تاثير دارند را به صورت زير بيان نمود:
۱) عمل تاييد بوسيله يک تابع با مقدار ورودي فرم مورد نظر و مقدار خروجي true يا false انجام مي گيرد. (در مثال فوق، بخش اول تابع وارد شدن مقداري براي کلمه عبور را بررسي ميکند. در بخش دوم همين عمل در ارتباط با تاييد کلمه عبور انجام مي گيرد و در بخش نهايي برابر بودن مقادير وارد شده مورد بررسي قرار مي گيرد.)
۲) مقدار بازگشتي تابع اصلي (با استفاده از return) به فرم ارجاع مي شود. در غير اين صورت (عدم استفاده از retuen) عمل ارسال فرم به صفحه مقصد در هر حالتي انجام مي گيرد.
۳) تمامي اجزائ دورن فرم در تابع اصلي با فرمت {نام جزئ}.{نام فرم(ورودي تابع)} قابل دسترسي مي باشند. (به عبارت formID.password.value در تابع مثال قبل توجه نماييد.)
با آرزوي موفقيت