Всплывающее окно подтверждения подтверждения с помощью JavaScript после нажатия на ссылку

Как создать одну из этих гиперссылок, где, когда вы нажмете на нее, появится всплывающее окно с вопросом "вы уверены?"

<INPUT TYPE="Button" NAME="confirm" VALUE="???" onClick="message()">

У меня уже есть функция message(). Мне просто нужно знать, каким будет тип ввода для гиперссылки.

Ответ 1

<a href="http://somewhere_else" onclick="return confirm()">

Когда пользователь нажимает на ссылку, вызывается функция confirm. Если функция подтверждения возвращает false, обход ссылки отменяется, если возвращается истина, ссылка проходит.

Ответ 2

<a href="http://something.com" onclick="return confirmAction()">try to click, I dare you</a>

с функцией

function confirmAction(){
      var confirmed = confirm("Are you sure? This will remove this entry forever.");
      return confirmed;
}

(вы также можете сразу подтвердить подтверждение, я разделил его для удобства чтения)

Протестировано в FF, Chrome и IE

Ответ 3

Как сказал Нахом, за исключением того, что я бы поместил вызов javascript:message() непосредственно в href-часть (тогда нет необходимости в onclik).

Примечание: оставление вызова JavaScript в onClick имеет преимущество: в атрибуте href вы можете поместить URL-адрес, если у пользователя нет встроенного JavaScript. Таким образом, если у них есть JS, ваш код запускается. Если они этого не делают, они отправляются куда-нибудь, где им поручено включить его (возможно).

Теперь ваша подпрограмма message должна не только задавать вопрос, но также использовать ответ: если он положительный, он должен вызвать submit() в форме для отправки формы. Вы можете передать this в вызове, чтобы облегчить выбор формы.

Лично я бы выбрал кнопку (тег ввода, который вы показываете) вместо простой ссылки для выполнения этого процесса: он использовал бы более знакомую парадигму для пользователей.

[EDIT] Поскольку я предпочитаю проверять ответы, которые я даю, я написал простой тест:

<script type="text/javascript" language="JavaScript">
function AskAndSubmit(t)
{
  var answer = confirm("Are you sure you want to do this?");
  if (answer)
  {
    t.form.submit();
  }
}
</script>

<form action="Tests/Test.html" method="GET" name="subscriberAddForm">
<input type="hidden" name="locationId" value="2721"/>
<input type="text" name="text" value="3.1415926535897732384"/>
<input type="button" name="Confirm" value="Submit this form" onclick="AskAndSubmit(this)"/>
</form>

Да, отправить просто перезагрузить страницу здесь... Протестировано только в FF3.

[EDIT] Следующее предложение в комментариях...: -)

Ответ 4

<a href="#" onclick="message(); return false;">???</a>

Этот ответ будет только в том случае, если клику не нужно перемещаться на другую страницу.