Подтвердить подтверждение нескольких кнопок отправки формы - PullRequest
0 голосов
/ 24 мая 2019

Я бы хотел определить, какая кнопка была нажата, используя диалог подтверждения оповещения. Это моя форма:

<form method='post' name='ImportExport' enctype='multipart/form-data'>
    <button onClick='return confirmAlert(event,this,\"Confirm IMPORT\")' type='submit' name='import' value='1'>Import</button>
    <button onClick='return confirmAlert(event,this,\"Confirm EXPORT\")' type='submit' name='export' value='1' >Export</button>
</form>

и мой JavaScript:

function confirmAlert(e, elem, text) {
    var event = e || window.event;
    if(event) {
        event.preventDefault();
    }
    if(alertify) {
        alertify.confirm(text, function(e) {
            if(e) {
                if(elem.tagName === 'A') {
                    window.location = elem.href;
                } else if(elem.tagName === 'FORM') {
                    elem.submit();
                } else if(elem.tagName === 'BUTTON') {
                    elem.form.submit();
                }
                return true;
            } else {
                return false;
            }
        }).setting({
            'title': 'Dialog',
            transition: 'zoom',
            'labels': {
                'ok': 'OK',
                'cancel': 'Cancel'
            }
        });
    }
}

Форма отправлена, но $ _POST на бэкэнде отсутствует нажатая кнопка. Как отправить форму с Alertify, в которой указана какая кнопка была нажата?

1 Ответ

0 голосов
/ 25 мая 2019

Я вижу, что для формирования скрытого ввода можно добавить только одно возможное решение:

else if(elem.tagName === 'BUTTON') {
    jQuery('<input>').attr('type', 'hidden').attr('name', elem.name).attr('value', elem.value).appendTo(elem.form);
    elem.form.submit();
}

, тогда оно работает как положено.

...