PDA

View Full Version : submit شدن فرم فقط با رخدادن یک رویداد خاص



milad_d993
جمعه 05 تیر 1394, 11:41 صبح
سلام دوستان
میخوام فقط زمانی که روی دکمه submit کلیک کردم فرم ارسال بشه و با زدن کلید اینتر زمانی که عناصر input text فرم ارسال نشه

reza_alie
جمعه 05 تیر 1394, 11:59 صبح
سلام فکر کنم سوالتون رو ناقص تایپ کردین

milad_d993
جمعه 05 تیر 1394, 12:18 عصر
ببینین وقتی که توی یه فرم input text وجود داشته باشه، بعد از ورود اطلاعات و زدن کلید enter فرم submit میشه
من میخوام بجای submit شدن focus به عنصر بعدی منتقل بشه (عمل tab) و فقط با زدن دکمه ای که برای این منظور گذاشتم فرم submit بشه

imansh_69
جمعه 05 تیر 1394, 13:06 عصر
سلام
اگه درست منظورتونو فهمیده باشم
بهترین راه حل میتونه استفاده از jquery باشه

barnamenevis2016
جمعه 05 تیر 1394, 13:30 عصر
سلام...خوب این چیزی که می خوایید رو فکر می کنم باید در بخش جاوا می پرسیدید...من این کد رو نوشتم...امتحان کنید...فکر می کنم باید بدون مشکل اجرا بشه...
این کد html اگر باشه:

<form method="post" action="index.php">
<input type="button">
<input type="button">
<input type="text" tabIndex="1" onkeypress="return enter(event,this)">
<input type="text" tabIndex="2" onkeypress="return enter(event,this)">
<input type="text" tabIndex="3" onkeypress="return enter(event,this)">
<input type="text" tabIndex="4" onkeypress="return enter(event,this)">
<input type="text" tabIndex="5" onkeypress="return enter(event,this)">
<input type="submit">
</form>
در کد html بالا می بینید..که اینپوت های مورد نظر براشون رویداد onkeypress تعریف شده....و همچنین براشون شاخص tabIndex تعریف شده...
اینم کد جاوا:

function enter(evt,currentElement) {
evt.preventDefault();
var endInputIndex = 5;
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if ( charCode==13 ) {
var form = currentElement.parentElement
var currentElementIndex = currentElement.tabIndex
for(var i = 1; i<form.elements.length; i++) {
if ( form.elements[i].tabIndex == currentElementIndex+1 && currentElementIndex<endInputIndex ){
form.elements[i].focus()
break;
}
}
}
return true;
}

در کد جاوای بالا یک endInputIndex داریک که تعداد اینپوت ها رو تعیین می کنید براش.

milad_d993
جمعه 05 تیر 1394, 14:43 عصر
سلام...خوب این چیزی که می خوایید رو فکر می کنم باید در بخش جاوا می پرسیدید...من این کد رو نوشتم...امتحان کنید...فکر می کنم باید بدون مشکل اجرا بشه...
این کد html اگر باشه:

<form method="post" action="index.php">
<input type="button">
<input type="button">
<input type="text" tabIndex="1" onkeypress="return enter(event,this)">
<input type="text" tabIndex="2" onkeypress="return enter(event,this)">
<input type="text" tabIndex="3" onkeypress="return enter(event,this)">
<input type="text" tabIndex="4" onkeypress="return enter(event,this)">
<input type="text" tabIndex="5" onkeypress="return enter(event,this)">
<input type="submit">
</form>
در کد html بالا می بینید..که اینپوت های مورد نظر براشون رویداد onkeypress تعریف شده....و همچنین براشون شاخص tabIndex تعریف شده...
اینم کد جاوا:

function enter(evt,currentElement) {
evt.preventDefault();
var endInputIndex = 5;
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if ( charCode==13 ) {
var form = currentElement.parentElement
var currentElementIndex = currentElement.tabIndex
for(var i = 1; i<form.elements.length; i++) {
if ( form.elements[i].tabIndex == currentElementIndex+1 && currentElementIndex<endInputIndex ){
form.elements[i].focus()
break;
}
}
}
return true;
}

در کد جاوای بالا یک endInputIndex داریک که تعداد اینپوت ها رو تعیین می کنید براش.

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

barnamenevis2016
جمعه 05 تیر 1394, 14:58 عصر
ببخشید باید کد زیر
evt.preventDefault();
در تابع enter مکانش جابه جا بشه و پس از if بیاد..یعنی اینطور بشه


function enter(evt,currentElement) {
var endInputIndex = 5;
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;

if ( charCode==13 ) {
evt.preventDefault();
var form = currentElement.parentElement
var currentElementIndex = currentElement.tabIndex
for(var i = 1; i<form.elements.length; i++) {
if ( form.elements[i].tabIndex == currentElementIndex+1 && currentElementIndex<endInputIndex ){
form.elements[i].focus()
break;
}
}
}
return true;
}