Несколько кнопок отправки, JavaScript - PullRequest
0 голосов
/ 08 августа 2011

У меня есть сервлет с формой и двумя кнопками. Одна кнопка «Отправить», другая кнопка «Удалить». Действие по умолчанию - Updater.do, но когда я нажимаю кнопку «Удалить», у меня появляется функция, чтобы изменить действие на Deleter.do. Это отлично работает. Проблема, с которой я столкнулся сейчас, заключается в том, что когда я нажимаю «ОК» в диалоговом окне подтверждения, оно переходит к Deleter.do, как я и хотел. Однако, когда они нажимают кнопку «Отмена», вместо того, чтобы просто оставаться на странице, появляется сообщение «Updater.do». Как бы я исправить это? Я попытался удалить действие по умолчанию, и у меня были оба действия: «Отправить» и «Удалить», но это не сработало. Вот javascript chgAction.

function chgAction(action_name) {
  if (action_name=="Delete") { 
    var answer = confirm("Are you sure you want to delete this Person? This action cannot be undone.") 
    if (answer) { document.forms[0].action = \"Deleter.do\"; } 
  }
}                  

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Попробуйте добавить return false к части "отмена":

function chgAction(action_name) {
  if (action_name=="Delete") { 
    var answer = confirm("Are you sure you want to delete this Person? This action cannot be undone.") 
    if (answer) { 
        document.forms[0].action = \"Deleter.do\"; 
    } 
    else {
        return false;    //ADDED
    }
  }
}
0 голосов
/ 08 августа 2011

Если кнопки отправки и удаления являются кнопками отправки, просто присвойте им разные имена. Имя той кнопки, которая была нажата, будет отправлено вместе с запросом, чтобы сервер мог ее отсортировать.

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

<form onsubmit="return chgAction(...);"

и chgAction должен вернуть false, как предложено Нивасом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...