2008-11-16 3 views
10

Как создать одну из этих гиперссылок, где при нажатии на нее появится всплывающее окно с вопросом: «Вы уверены?»Отображение подтверждения с помощью JavaScript после нажатия на ссылку

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

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

ответ

2

Как сказал Нахом, за исключением того, что я бы поместил вызов 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], а затем предложение в комментариях ... :-)

+0

«t.parentNode» работает для этого примера, но он хрупкий, потому что он содержит предположение. Лучше «t.form». – Tomalak 2008-11-16 12:02:35

+0

Tomalak правильный, t.form будет лучше. – scunliffe 2008-11-16 13:05:20

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

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

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

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

15
<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