PDA

View Full Version : سوال: دو دکمه سابمیت در یک فرم



reza.palang
پنج شنبه 14 آذر 1387, 08:51 صبح
سلام به دوستان
سوالی که داشتم اینه که آیا میشه دو دکمه سابمیت با دو کار برد متفاوت داشته باشیم؟
اینطوری که اگر اولی رو بزنیم متغیر A رو ارسال کنه و اگر دومی رو بزنیم متغیر B
و در هر دو حالت متغیر دیگه ارسال نشه یا نال باشه

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

اعظم
پنج شنبه 14 آذر 1387, 10:54 صبح
اگر حالتی وجود نداره که با یک فرم و یکی از سابمیت ها همه متغییر ها با هم ارسال شوند بهتره که از فرم های جداگانه و سابمیتهای مختص به خودشون استفاده کنی ولی اگر همچنان اصرار داری از روش خودت استفاده کنی میشه اینکار رو کرد دو تا تابع جاوا بنویس که هر کدام جداگانه در دکمه سابمیت فراخونی بشه و کار تابع این باشد که متغییرهای غیر ضروری رو نال کنه و البته یک فیلد hidden رو هم مقدار یکتایی بده که مشخص بشه کدام یک از سابمیت ها زده شده .
البته در این روش اگر تابعی داشته باشی که در رویداد onsubmit فرم برای خطایابی فرم تعریف شده باشه احتمالا به مشکل می خوری .

یک راه دیگه اینه که دکمه ها رو از نوع معمولی بذاری و بعد در تابع جاوا فراخوانی شده از
document.FormName.submite(); استفاده کنی اینطوری می تونی خطایابی فرم رو هم انجام بدی .

( در ضمن این سوال ربطی به php نداشت ;) )

reza.palang
پنج شنبه 14 آذر 1387, 11:16 صبح
اگر حالتی وجود نداره که با یک فرم و یکی از سابمیت ها همه متغییر ها با هم ارسال شوند بهتره که از فرم های جداگانه و سابمیتهای مختص به خودشون استفاده کنی ولی اگر همچنان اصرار داری از روش خودت استفاده کنی میشه اینکار رو کرد دو تا تابع جاوا بنویس که هر کدام جداگانه در دکمه سابمیت فراخونی بشه و کار تابع این باشد که متغییرهای غیر ضروری رو نال کنه و البته یک فیلد hidden رو هم مقدار یکتایی بده که مشخص بشه کدام یک از سابمیت ها زده شده .
البته در این روش اگر تابعی داشته باشی که در رویداد onsubmit فرم برای خطایابی فرم تعریف شده باشه احتمالا به مشکل می خوری .

یک راه دیگه اینه که دکمه ها رو از نوع معمولی بذاری و بعد در تابع جاوا فراخوانی شده از
document.FormName.submite(); استفاده کنی اینطوری می تونی خطایابی فرم رو هم انجام بدی .

( در ضمن این سوال ربطی به php نداشت ;) )
ممنون از راهنماییت
راه حل شما رو قبلا تست کردم. از لحاظ تئوری شاید درست باشه ولی عملا درست کار نمیکنه
البته من میخوام هر بار که دکمه سابمیت رده میشه بر اساس 2 یا 3 dropDown menu متغیر هایی فرستاده نشه یا صفر ارسال بشه

اون قسمت جاوا رو تست نکردم چون هنوز بلد نیستم زیاد

** اگه ربطی به php نداره سوال حتمان در مورد بادمجان سوال پرسیدم :گیج:
** سوال رو نمیدومنم اما جواب جاوا اسکریپت بود

اعظم
پنج شنبه 14 آذر 1387, 17:55 عصر
دقیقا منظورم این بود که این سوال رو باید در بخش html و جاوا اسکریپت میذاشتی .

I,Nobody
پنج شنبه 14 آذر 1387, 17:56 عصر
آقا رضا؛
دقیقاً همونطور که گفتید، با جاوا اسکریپت می تونید این کار رو انجام بدید.
ولی اگر میخواید مقادیر دیگه ارسال نشند، یا باید disabled بشن، یا اینکه مستقلاً مقداردهی بشند.
اگر مشکلی دارید، بگید تا توضیح بیشتر بدم

narsic
پنج شنبه 14 آذر 1387, 22:28 عصر
در بخش جاوا اسکریپت مطرح کنید

reza.palang
پنج شنبه 14 آذر 1387, 23:21 عصر
آقا رضا؛
دقیقاً همونطور که گفتید، با جاوا اسکریپت می تونید این کار رو انجام بدید.
ولی اگر میخواید مقادیر دیگه ارسال نشند، یا باید disabled بشن، یا اینکه مستقلاً مقداردهی بشند.
اگر مشکلی دارید، بگید تا توضیح بیشتر بدم

ممنون از جوابتون
disabled شدنشون رو اگه توضیح بدید ممنون میشم
چون با مقدار دهی مجدد نتونستم کارم رو بکنم. چرا نمیدونم

it4six
جمعه 15 آذر 1387, 01:28 صبح
you can have two links by <a> tag and send your param by get method and use <button>tag for display a button
for exam:
<button><a href=target.php?id=A>link</a></button>

persian_farvahar
جمعه 15 آذر 1387, 12:42 عصر
یه راه دیگه هم داری :
هر دو دکمه ها را با یک نام ولی با Value متفاوت بزاز و متد ذو پست قرار بده و سمت سرور چک کنه که اگه اvalue کلید برابر با فلان بود فلان تابع صدا زده بشه:


<Inpute type="submit" name="submit" value="insert">
<input type="submit" name ="submit" value="Update">

سمت سرور هم که نام کلید رو به متد پست میدی و چک میکنی Value چیه اونقت میای برحسب value اون عملیات مخصوص رو انجام میدی.

امید امرایی
جمعه 15 آذر 1387, 12:54 عصر
سلام به دوستان
سوالی که داشتم اینه که آیا میشه دو دکمه سابمیت با دو کار برد متفاوت داشته باشیم؟
اینطوری که اگر اولی رو بزنیم متغیر A رو ارسال کنه و اگر دومی رو بزنیم متغیر B
و در هر دو حالت متغیر دیگه ارسال نشه یا نال باشه
اگر راهنمایی کنید ممنون میشم

این کار شما اساسا غیر منطقیه . چرا که شما می خواید به جای اینکه خودتون کنترل جریان برنامه رو در اختیار داشته باشید اون رو به فرم واگذار کنید .

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

I,Nobody
جمعه 15 آذر 1387, 19:57 عصر
اینو همینجا با عجله نوشتم.
بهت ایده میده :


<form name=myForm>
FirstName 1 :<input name=fname1 id=fname1>
FirstName 2 :<input name=fname2 id=fname2>
<br>
<input type=submit value="Send1" onclick='javascript:return send_form(this.value);'>
<input type=submit value="Send2" onclick='javascript:return send_form(this.value);'>
</form>
<script language=javascript>
function send_form(which){
if(!which) which='';
switch(which){
case "Send1":
myForm.fname1.disabled=false;
myForm.fname2.disabled=true;
return true;
case "Send2":
myForm.fname2.disabled=false;
myForm.fname1.disabled=true;
return true;
default :
return false;
}

}
</script>

Hello,World!!
چهارشنبه 20 آذر 1387, 13:38 عصر
یه راه دیگه هم داری :
هر دو دکمه ها را با یک نام ولی با Value متفاوت بزاز و متد ذو پست قرار بده و سمت سرور چک کنه که اگه اvalue کلید برابر با فلان بود فلان تابع صدا زده بشه:


<Inpute type="submit" name="submit" value="insert">
<input type="submit" name ="submit" value="Update">

سمت سرور هم که نام کلید رو به متد پست میدی و چک میکنی Value چیه اونقت میای برحسب value اون عملیات مخصوص رو انجام میدی.
منطورت این کده؟


$_post['submit']

mrbm_2007
سه شنبه 26 آذر 1387, 13:50 عصر
سلام
من فکر میکنم اگه اسم های دکمه هات متفاوت باشند.مقدار اون که زده شده فرستاده میشه ولی اون یکی نال میشه یا اصلا ست نمی شه.
میتونی امتحان کنی.

mrbm_2007
سه شنبه 26 آذر 1387, 14:02 عصر
دوست عزیز این کد رو نگاه کن


<pre>
<?php
print_r($_POST);
?>
</pre>
<form method="post" action ="" >
<input type="text" value="12345" name="t1"/><br />
<input type="text" value="23456" name="t2"/><br />
<input type="text" value="34567" name="t3"/><br />
<input type="text" value="45678" name="t4"/><br />
<input type="submit" value="test1" name="submit1"/><br />
<input type="submit" value="test2" name="submit2"/><br />
</form>

mrbm_2007
سه شنبه 26 آذر 1387, 14:04 عصر
من تست کردم وقتی test1 رو کلیک کنی مقدار isset($_POST['submit2']) false است

reza.palang
شنبه 30 آذر 1387, 09:45 صبح
این کار شما اساسا غیر منطقیه . چرا که شما می خواید به جای اینکه خودتون کنترل جریان برنامه رو در اختیار داشته باشید اون رو به فرم واگذار کنید .

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

البته این مشکل با روی هم ریختن راهنمایی های دوستان حل شد. ولی میخوام بدونم چرا غیر منطقی هست؟

ویک چیز دیگه اینکه با زدن دکمه ENTER زمانی که در حال تایپ در یک تکست باکس هستیم چجوری میشه که مشخص کرد کدوم یک از این دکمه ها عمل کنه؟