PDA

View Full Version : سوال: جلوگیری از نوشتن تاریخ با فرمت نادرست در text field



.fatemeh
شنبه 16 فروردین 1393, 13:17 عصر
با سلام
من یه فیلد دارم که باید تاریخ توسط کاربر نوشته بشه.
حالا می خوام تاریخ حتما با فرمت yy/mm/dd نوشته بشه. نمی خوام سه تا text field بزارم
اگر اشتباه زد وقتی می خواد بره فیلد بعدی رو پر کنه خطا بده نه وقتی که روی کلید ثبت کلیک می کنه.

refugee
شنبه 16 فروردین 1393, 13:44 عصر
به این کار میگن validation اعتبار سنجی کرددن .

میتونید هم توسط جاوااسکریپت سمت کلاینت این کارو بکنید و هم توسط PHP سمت سرور .

سرچ کندی نمونه زیاده توی اینترنت

SadeghPro19
شنبه 16 فروردین 1393, 13:45 عصر
از طریق کد زیر میتونید همچین کاری کنید ولی اگه میخواید در همان لحظه اگه خراب بود اخطار بده باید از طریق jquery و ajax اینکار رو انجام بدین.

if (!preg_match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{2}$/", $_POST['date'])) {
echo 'فرمت تاریخ به درستی وارد نشده است';
}
کد jqeury و ajax:
$("#yourField").keyup(function(e) {
$(this).val($(this).val().replace(/\s/g, '')); //removes spaces from username
var date_format = $(this).val(); //get the string typed by user
if (date_format.length === 0) {
$("#yourField_result").html('');
return;
}
$.post('phpfile.php', {'date': date_format}, function(data) {
$("#yourField_result").html(data); //dump the data received from PHP page
});
});
کد اول که مربوط به php هست رو توی یه فایل بزارید مثلا phpfile .
کدهای جی کئوری هم مشخصه yourField فیلدی هست فرمت تاریخ رو کاربر باید وارد کنه و yourField_result هم باید یه دایو بزارین که وقتی اطلاعات نادرست وارد شده بود اونجا ارور رو نشون بده حالا خودتون میتونید تغییراتی هم بدید.

refugee
شنبه 16 فروردین 1393, 13:49 عصر
چرا از اسکریپت های تقویم جاوااسکریپت استفاده نمیکنید ؟

در اینصورت کافیست فقط کاربر تاریخ رو انتخاب کنه و خود تقویم کادر رو تکمیل میکنه .

http://amib.ir/weblog/?page_id=316

http://barnamenevis.org/showthread.php?51334-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA

http://www.mediafire.com/convkey/23a0/zb34x400hthcz83fg.jpg

.fatemeh
شنبه 16 فروردین 1393, 14:04 عصر
از همه دوستان ممنونم.

چرا از اسکریپت های تقویم جاوااسکریپت استفاده نمیکنید ؟
این نمونه رو گذاشته بودم ولی بعضی از کاربرها خودشون تایپ کرده بودن که اشتباه هم بود و برنامه خطا نداده و ثبت کرده بود.
الان هم همین طوریه و آیکن تقویم کنار text fieldهست می خوام اگر خود کاربر هم تایپ کرد مشکل نداشته باشه.

hamedarian2009
شنبه 16 فروردین 1393, 14:25 عصر
من هم قبلا یک تابع نوشتم فکر کنم بدردتون بخوره


<?php
function validate_date($date)
{
$arr_date = explode('/', $date);
if(@checkdate($arr_date[1], $arr_date[2], $arr_date[0]) )
return true;
else
return false;
}
if (isset($_POST['submit'])) {
if(!validate_date($_POST['date'])){
echo '<font color="red">فرمت تاریخ وارد شد معتبر نیست</font>';
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body dir="rtl">
<form action="" method="post">
تاریخ تولد :<input type="text" name="date"><b>لطفا تاریخ را به فرمت 93/01/01 وارد کنید</b><br>
<input type="submit" name="submit" value="GO">
</form>
</body>
</html>

hamedarian2009
شنبه 16 فروردین 1393, 14:32 عصر
اگر اشتباه زد وقتی می خواد بره فیلد بعدی رو پر کنه خطا بده نه وقتی که روی کلید ثبت کلیک می کنه.
واسه اینکار باید از AJAX استفاده کنید

.fatemeh
شنبه 16 فروردین 1393, 14:35 عصر
من هم قبلا یک تابع نوشتم فکر کنم بدردتون بخوره
صفحه رفرش می شه می خوام تا رفت فیلد بعدی رو پر کنه خط بده.
برای این کار مطمئنم باید با AJAX کار کنم ولی هنوز که جواب نداده.

refugee
شنبه 16 فروردین 1393, 14:49 عصر
از همه دوستان ممنونم.

این نمونه رو گذاشته بودم ولی بعضی از کاربرها خودشون تایپ کرده بودن که اشتباه هم بود و برنامه خطا نداده و ثبت کرده بود.
الان هم همین طوریه و آیکن تقویم کنار text fieldهست می خوام اگر خود کاربر هم تایپ کرد مشکل نداشته باشه.

من فکر میکنم این روش بهتر و راحت تر است . کاربر دسترسی بیشتری داره و خسته کننده نیست . شاید از فرمت خبری نداشته باشه شاید اصلا تخصص نداشت . با این تقویم میتوانید راحت تر بهش کمک کنید .

برای رفع اون خطا هایی هم که در موقع اجرای تقویم بهش برخوردید دو راه حل دارم : ( نظر شخص بنده است )

- برای اینکه خودشون قابلیت تایپ نداشته باشند میتوانید تکست باکس رو غیر فعال کنید و کاربر و مجبور کنید اول توسط ایکون تاریخ رو انتخاب کنه و وقتی انتخاب کرد خود برنامه چاپ میکنه ( و یا بعد انتخاب فعال میکنید . )

- برای این منظور که خود کاربر تایپ کنه هم که باید اعتبارسنجی بشه فقط . توسط جی کوئری و جاوا میتوانید بررسی کنید سمت کلاینت واگر درست نبود میتونید خطا بدین یا پیام یا ..

یا اصلا میتونید تا تکمیل نکرده تکست باکس بعدی براش فعال نباشه . ( بصورت پله کان میره جلو هر فیلد تکمیل شد فعیل بعدی فعال بشه )

***BiDaK***
شنبه 16 فروردین 1393, 15:31 عصر
regex روبا استفاده از دستور match در جاوااسکریپت جایگذاری کن.نیازی هم به ajax نیست چون این عمل سمت کلاینت هم میشه انجامش داد.
البته شما سمت سرور هم بعد از سابمیت با دستوراتی که دوستان گذاشتن حالا یا با regex و یا ... چک کنید هم فرمت تاریخ و هم فیلد های دیگر فرم رو.چون امکان disable بودن جاوااسکریپت هست.