【发布时间】:2010-09-22 13:26:53
【问题描述】:
如何创建其中一个超链接,当您单击它时,它会显示一个弹出窗口,询问“您确定吗?”
<INPUT TYPE="Button" NAME="confirm" VALUE="???" onClick="message()">
我已经有一个 message() 函数在工作。我只需要知道超链接的输入类型是什么。
【问题讨论】:
标签: javascript html user-interface popup
如何创建其中一个超链接,当您单击它时,它会显示一个弹出窗口,询问“您确定吗?”
<INPUT TYPE="Button" NAME="confirm" VALUE="???" onClick="message()">
我已经有一个 message() 函数在工作。我只需要知道超链接的输入类型是什么。
【问题讨论】:
标签: javascript html user-interface popup
<a href="http://somewhere_else" onclick="return confirm()">
当用户点击链接时,confirm 函数将被调用。如果confirm函数返回false,则取消链接遍历,如果返回true,则遍历链接。
【讨论】:
<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 中测试
【讨论】:
正如 Nahom 所说,除了我将 javascript:message() 调用直接放在 href 部分(然后不需要 onclik)。
注意:在 onClick 中保留 JavaScript 调用有一个好处:在 href 属性中,如果用户没有 URL,您可以放置一个要转到的 URL启用 JavaScript。这样,如果他们有 JS,你的代码就会运行。如果他们不这样做,他们就会去某个地方指示他们启用它(也许)。
现在,您的message 例程不仅要提出问题,还要使用答案:如果是肯定的,它必须在表单上调用 submit() 以发布表单。您可以在调用中传递this 以简化表单的获取。
就我个人而言,我会选择一个按钮(如您所示的输入标签)而不是一个简单的链接来完成该过程:它将使用用户更熟悉的范例。
[编辑] 因为我更喜欢验证我给出的答案,所以我写了一个简单的测试:
<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 中测试。
[编辑] 遵循 cmets 中的建议... :-)
【讨论】:
<a href="#" onclick="message(); return false;">???</a>
只有当点击不需要导航用户到另一个页面时,这个答案才可以。
【讨论】: