Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Определение нажатой submit в onsubmit
При отправки формы на сервер с помощью Ajax возникает проблема определении нажатой submit в onsubmit. Предлагаю два простых решений:
- Запоминать кнопку обработчиком
onclick
на уровне формы и затем добавлять ее, если она не null в отправляемые данные. - Обрабатывать
onclick
на самой кнопкеsubmit
и отправлять данные в этом обработчике.
Этот пример демонстрирует определение нажатой submit
в onsubmit
с предварительной обработкой onclick
на форме:
Сюда выводится результат
Исходный код этого примера:
<script type="text/javascript">
var submit;
function SubmitControl(e)
{
e=e || window.event;
o=getEventTarget(e);
if(e.type=='click')submit=( o.type=='submit' ? o : null );
if(e.type=='click')document.getElementById('res').innerHTML=''; // очищаю поле вывода
document.getElementById('res').innerHTML+='<br>e.type='+e.type+'<br>o.type='+ o.type+
'<br>submit: '+(submit?'name='+submit.name+' value='+submit.value:'null')+
(e.type=='submit'?'<br>отправка формы на сервер':'')+'<br>';
//if(e.type='submit') отправка формы на сервер с помощью ajax
//if(e.type=='click')return true; // продолжаем всплытие чтобы отработал onsubmit
return (e.type=='click');
}
function getEventTarget(e) {
e=e || window.event;
var target=e.target || e.srcElement;
if(typeof target == "undefined")return e; // передали this, а не event
if(target.nodeType==3) target=target.parentNode;// боремся с Safari
return target;
}
</script>
<form method="POST" onclick="return SubmitControl(event)" onsubmit="return SubmitControl(event)">
<input type="button" name="sub" value="Кнопка button">
<input type="submit" name="sub" value="Кнопка Submit - 1 name=sub">
<input type="submit" name="sub" value="Кнопка Submit - 2 name=sub">
<input type="submit" value="Кнопка Submit без name">
</form>
<div id="res" class="res">Сюда выводится результат</div>
Это обработка onclick на submit:
<form method="post" action="index.php" accept-charset="utf-8" onsubmit="return SendForm('info',this);">
<input type="submit" name="sub1" value="Кнопка sub1" onclick="return SendForm('info',this);">
</form>
<script type="text/javascript">
function SendForm(obj,frm){ // универсальная отправка формы
var str=''; // сюда складывается строка с переменными для отправки формы
if(frm.tagName=='INPUT'){/*передан input type=submit*/
str=encodeURIComponent(frm.name)+'='+encodeURIComponent(frm.value)+'&';
frm=frm.form;
}
// дальше идет стандартная отправка
}
</script>
.
Прокомментировать/Отблагодарить