我有一个javascript,为“PreChecking”网站打开一个新窗口。问题是,当我点击按钮,它工作正常...但是按下我按下我按下然后再次触发方法,尽管我没有调用它。它只是一个id为“lnkPrecheck”的按钮,应该调用该方法。 已经进行了广泛搜索,只为lnkPrecheck按钮打开了一个新窗口,而不是网站上的其他按钮。 这必须是一个方法,只有3个按钮中的1个进行函数调用,而不是全部!
代码:
<asp:Button OnClick="lnkPrecheck_Click" OnClientClick="NewWindow();" ID="lnkPrecheck" runat="server" text="Precheck (Opens in a new window)" />
function NewWindow() {
document.forms[0].target = "_blank";
}
答案 0 :(得分:3)
试试这个:
<script type="text/javascript">
var NewWindow = function() {
document.forms[0].target = "_blank";
return false; // Prevents ASP.NET-buttons from performing default behavior
}
</script>
<asp:Button OnClick="lnkPrecheck_Click" OnClientClick="NewWindow();" ID="lnkPrecheck" runat="server" text="Precheck (Opens in a new window)" />
不确定将表单的target
设置为_blank
是否会打开一个新窗口。
答案 1 :(得分:2)
如果表单中包含任何<input type="button" ... />
或<button>
标记,则必须使其onclick
处理程序返回false(否则取消任何点击事件)。否则,他们的默认行为是提交表单,即使它们不是明确的“提交”按钮。
答案 2 :(得分:0)
您的问题没有真正的“解决方案”。
设置表单目标后,它会保持良好状态。它不会恢复到原来的目标。
一种方法是将原始目标存储为自定义属性,然后在单击其他按钮时“重置”目标。
代码就是:
function NewWindow() {
var oForm = document.forms[0];
var curTarget = oForm.target;
if (curTarget != "_blank")
oForm.setAttribute("org_target", curTarget);
oForm.target = "_blank";
}
function ResetTarget() {
var oForm = document.forms[0];
oForm.target = oForm.getAttribute("org_target");
}
然后在所有其他按钮中首先调用ResetTarget
函数。
答案 3 :(得分:0)
一旦尝试这个......
它对我有用..
将此选项用于要在新选项卡中打开的asp.net控件。
OnClientClick="window.document.forms[0].target='_new'; setTimeout(function(){window.document.forms[0].target='';}, 500);"