две кнопки отправки, с подтверждением всплывает только на одной кнопке отправки

У меня есть две кнопки отправки в форме, которая позволяет пользователю обновлять/удалять контент. Я хочу подтвердить всплывающее окно, только если пользователь нажимает кнопку «Удалить».

<html>
<head>
<script type="text/javascript">

function confirmation() {
        // I need to know which submit button was pressed.
       if (value==Delete){
        var answer = confirm("Cancel?")
            if (answer){
                    return true;
            //Continue as intended
            }
            else{
             return false
            }
      }
}

</script>
</head>
<body>
<form id="Edit_Data">
//form input fields go here
<input name="action"  type="submit" onclick="confirmation()" value="Update">
<input name="action"  type="submit" onclick="confirmation()" value="Delete">
</form>
</body>
</html>

Есть идеи?


person aVC    schedule 19.05.2012    source источник
comment
Обе ваши кнопки не относятся к типу submit.   -  person VisioN    schedule 19.05.2012


Ответы (3)


Во-первых, у вас есть несколько проблем с вашим кодом. Значение в вашем операторе if является неопределенной переменной, во-вторых, вам нужно поместить кавычки вокруг удаления. Вот рабочая скрипта http://jsfiddle.net/SMBWd/ и соответствующее изменение кода. Кроме того, я бы посоветовал вам посмотреть, как это сделать без использования javascript в вашем HTML.

function confirmation(e) {
        // I need to know which submit button was pressed.
       if (e.value=='Delete'){

и в HTML

<input name="action"  type="button" onclick="confirmation(this)" value="Update">
<input name="action"  type="button" onclick="confirmation(this)" value="Delete">
person qw3n    schedule 19.05.2012
comment
Извините за ошибки в коде. Я попробовал ваш код, он показывает всплывающее окно. Но даже если я нажму «Отмена» во всплывающем подтверждении, форма все равно продолжит работу. Можете ли вы проверить это с помощью action=google.com? - person aVC; 19.05.2012
comment
@aVC вот новая скрипка jsfiddle.net/SMBWd/3, есть несколько изменений. Это несколько грязный способ сделать это, но он дает вам идею. - person qw3n; 19.05.2012
comment
Спасибо. Выглядит хорошо, за исключением моего фактического кода. Если я использую type=submit для двух кнопок, кажется, что это не удается. Это должно быть? - person aVC; 19.05.2012
comment
@aVC Вам нужно использовать type="button" - person qw3n; 19.05.2012

Для вашего определения события onclick в теге html, почему бы не вызвать отдельные функции?

person ControlAltDel    schedule 19.05.2012

Самый простой способ - НЕ вызывать javascript на кнопке «Обновить».

Если ваша форма статическая, вы делаете это в своей среде IDE. Если он динамический, то динамический код может создать соответствующий элемент формы.

Если элементы формы генерируются автоматически, вам следует настроить обработчик событий в JavaScript динамически. Найдите все элементы ввода типа с помощью кнопки атрибута типа или отправки и назначьте

elems[i].onclick = confirmation;

Затем вы получите объект события в качестве параметра метода и сможете запросить его для значения кнопки.

person Rajesh J Advani    schedule 19.05.2012
comment
J, Спасибо, дружище, за ответ. Я очень новичок в JS. Надеюсь, в долгосрочной перспективе я подробно рассмотрю ваши предложения и реализую их. :) - person aVC; 20.05.2012