AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Определение нажатой submit в onsubmit

При отправки формы на сервер с помощью ajax возникает проблема определении нажатой submit в onsubmit. Предлагаю два простых решений:

  1. запоминать кнопку обработчиком onclick на уровне формы и затем добавлять ее, если она не null в отправляемые данные.
  2. обрабатывать 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="cp1251" 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>

. 6400 dpi - не шутки! http://3d-artlines.ru купить компьютерную мышь Razer (Рейзер) в Москве.

© Copyright 2008-2016 by KDG