PDA

View Full Version : فیلدهای الزامی فرم



.fatemeh
دوشنبه 09 خرداد 1390, 12:08 عصر
سلام.
من یه فرم دارم که 8 تا فیلد داره که چهار تا از اونها الزامیه.
وقتی کاربر دکمه ارسال رو می زنه ،بررسی می کنم الزامی ها رو پر کرده باشه.
حالا اگه فیلدالزامی خالی باشه پیام می ده.ولی چون صفحه رفرش می شه تمام 8 فیلدم خالی می شه و
کابر از اول باید فیلدها رو پر کنه که این چندان خوشایند نیست.
چه کار کنم که هم پیغام بده ، هم فیلدهایی که پرکرده باقی بمونه؟؟

hamid-nic
دوشنبه 09 خرداد 1390, 22:38 عصر
سلام
قبل از ارسال فرم به سرور بر روی کامپیوتر کاربر (کلاینت) عمل چک کردن و صحیح بودن را انجام بدهید .
موفق باشید .

.fatemeh
چهارشنبه 11 خرداد 1390, 08:52 صبح
function name()
{
if(document.getElementById('n').value=="")
{
alert("پرکردن فیلد نام الزامی است");
return true;
}
return false;
}

من این تابع رو توی onBlur فیلد فراخوانی می کنم ، ولی جواب نمیده.(هیچ پیامی نمی ده )
چون توی سایت هم چندین فرم دارم می خوام طوری باشه که بتونم توی چندین صفحه فراخوانی کنم.
خواهش می کنم راهنمایی کنید.چه کار کنم؟

J.Masomi
چهارشنبه 11 خرداد 1390, 10:45 صبح
با سلام
اگر میخواهید زمان ارسال چک بکنید باید روی اکشن onclick دکمه submit قرار دهید.
توی تابعتون هم تمام فیلدهای الزامی را چک کنید.
در ضمن در onclick قرار دهید : onclick="return valid()"

Mahdi.Spirit
چهارشنبه 11 خرداد 1390, 10:51 صبح
اينجا يه سري نمونه هست ،‌ احتمالا كارتون رو راه ميندازه
http://www.tizag.com/javascriptT/javascriptform.php
ضمنا حتما سمت سرور هم بايد چك كنيد چون ممكنه جاوا توي مرورگر غيرفعال باشه ،‌ براي خالي نشدن فرم هم ميتونيد همون اطلاعات پرشده رو دوباره به فرم ارسال كنيد

colors
چهارشنبه 11 خرداد 1390, 11:15 صبح
درود

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

بیشتر با توابع کار میکنیم که کنترل کد برایمان ساده باشد.


<html>
<head>
<title>
Persisting user data
</title>
</head>

<body>
<h1>Persisting user data</h1>
<?php
$errors_array = array();

if(isset($_REQUEST["welcome_already_seen"])){
check_data();
if(count($errors_array) != 0){
show_errors();
show_welcome();
} else {
handle_data();
}
}
else {
show_welcome();
}

function check_data()
{
global $errors_array;

if($_REQUEST["first"] == "") {
$errors_array[] = "<font color='red'>Enter your first name</font>";
}
if($_REQUEST["last"] == "") {
$errors_array[] = "<font color='red'>Enter your last name</font>";
}
}

function show_errors()
{
global $errors_array;

foreach ($errors_array as $err){
echo $err, "<br>";
}
}

function handle_data()
{
echo "Here is your first name: ";
echo $_REQUEST["first"];
echo "<br>Here is your first name: ";
echo $_REQUEST["last"];
}

function show_welcome()
{
$first_name = isset($_REQUEST["first"]) ? $_REQUEST["first"] : "";
$last_name = isset($_REQUEST["last"]) ? $_REQUEST["last"] : "";
echo "<form method='post'>";
echo "Enter your first name: ";
echo "<input name='first' type='text' value='", $first_name, "'>";
echo "<br>";
echo "<br>";
echo "Enter your last name: ";
echo "<input name='last' type='text' value='", $last_name, "'>";
echo "<br>";
echo "<br>";
echo "<input type='submit' value='Submit'>";
echo "<input type=hidden name='welcome_already_seen'
value='already_seen'>";
echo "</form>";
}
?>
</body>
</html>


کد بالا را در نظر بگیرید.

اول متغیر $errors_array برابر یک آرایه قرار دادیم.
بعد توسط خط
if(isset($_REQUEST["welcome_already_seen"])){ بررسی میکنیم که فیلد پنهان welcome_already_seen مقداری داشته باشد( که همیشه دارد ) در این صورت تابع
check_data(); فراخوانی میشود که دارای محتویات زیر است


function check_data()
{
global $errors_array;

if($_REQUEST["first"] == "") {
$errors_array[] = "<font color='red'>Enter your first name</font>";
}
if($_REQUEST["last"] == "") {
$errors_array[] = "<font color='red'>Enter your last name</font>";
}

در داخل این تابع بررسی میکنیم که اگر فیلدهای فیلد های first name و last name برابر یک رشته خالی بودند به آرایه ی errors_array عناصری با مقدارهای مناسب برای first name و last name بده

ادامه بررسی خط CODE]if(isset($_REQUEST["welcome_already_seen"])){[/CODE] بعد از اجرای تابع check_data یک شرط تعریف میکنیم که اگر آرایه errors_array عنصری داشت توابع
show_errors و show_welcome فراخوانی شود در غیر این صورت اگر آرایه errors_array هیچ عنصری نداشت تابع handle_data فراخوانی شود.

تحلیل تابع show_errors :
آرایه errors_arrayرا توسط لغت کیدی global مورد دست یابی قرار می دهیم
بعد توسط حلقه foreach روی عناصر آرایه حلقه ایجاد کرده و هربار یکی از عناصر آنرا فرواخوانی میکنیم.

تحلیل تابع show_welcome :
در دو خط اول دو متغیر تعریف کرده و آنها را به ترتیب برابر مقدارهای کادرهای first name و last name قرار میدهیم و توسط عملگر سه تایی بررسی میکنیم که اگر کاربر در فیلدهای first name و last name مقداری وارد کرده بود آنها را برابر متغیر ها قرار بده در غیر این صورت یک رشته خالی را انتساب می دهیم.
و کد زیر که عملکردش واضح است


echo "<form method='post'>";
echo "Enter your first name: ";
echo "<input name='first' type='text' value='", $first_name, "'>";
echo "<br>";
echo "<br>";
echo "Enter your last name: ";
echo "<input name='last' type='text' value='", $last_name, "'>";
echo "<br>";
echo "<br>";
echo "<input type='submit' value='Submit'>";
echo "<input type=hidden name='welcome_already_seen'
value='already_seen'>";
echo "</form>";

اجرا می شود -- دقت کنید که به صفت value فیلدهای first name و last name متغییر های که در اول کد تابع فراخوانی کریدم مقدار می دهیم تا اگر قبلا مقداری وارد کرده بود و صفحه رفرش شد مقدارهای قبلی را حفظ کند

تحلیل تابع handle_data :
این تابع هم عملکرد واضحی داره


echo "Here is your first name: ";
echo $_REQUEST["first"];
echo "<br>Here is your first name: ";
echo $_REQUEST["last"];

داههای کاربر رو میگیره و نمایش میده


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

.fatemeh
دوشنبه 16 خرداد 1390, 09:59 صبح
از همه دوستان به خاطر کمکشون ممنونم