script与asp:LinkButton的问题

klan 2007-12-05 09:34:26
我在点击按钮之前要用javascript和用户确认一下是否要退出。但是这里的问题是,如果我点击同意退出,代码将执行this.children[0].click(),也就是响应asp:LinkButton的click时间。但是在这之前,它首先响应的是onclick="if(askForSavingDocument())这个script,这样的话,每次用户点击这个按钮,都会跳出2遍询问是否要退出。有什么好的办法可以解决? 谢谢


asp.net代码:
<div class="Button"
onmouseover="this.className='ButtonHover';"
onmouseout="this.className='Button';"
onselectstart="return false;"
onclick="if(askForSavingDocument())this.children[0].click();">Home
<asp:LinkButton ID="HomeButton" Runat="server" EnableViewState="False" style="DISPLAY:none"/></div>

如下为javascript:
function askForSavingDocument()
{
// hack to warn user when leaving screen on creating a notification
var createnotificationprocess = document.getElementById("createnotificationprocess");
if (createnotificationprocess != null)
{
if (createnotificationprocess.value == "1") {
return confirm("If you continue you will lose the notification you are currently creating");
} else if (createnotificationprocess.value == "2") {
return confirm("Do you wish to exit create new notification?");
}
}
//

if(true == documentChanged)
{
var answer = confirm("Do you want to save the changes to the screen?");

if(true == answer){
SaveAfterSpellCheck();
return false;
}
}

return true;
}
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhqmcy 2007-12-05
  • 打赏
  • 举报
回复
看了,学了,用了!恩,真好!
symbol441 2007-12-05
  • 打赏
  • 举报
回复
设置一个标志位应该可以解决LZ的问题
在function askForSavingDocument()
函数当中设置一个标志位 onclicked布尔型变量
当点击了一次即执行该函数一次时把其设置为true
在函数当中再加一个判断,如果为true则不触发该事件同时把onclicked设置为false
seedling_lq 2007-12-05
  • 打赏
  • 举报
回复
从你的代码上来看LinkButton是隐藏的,那么把它移动到div的外面也未尝不可吧,当然这样也就不会触发两次事件;再者,如果不移动,那就在js里加上一标识位记住是否已经触发,也可保证只触发一次
klan 2007-12-05
  • 打赏
  • 举报
回复
忘记说了,我是VS2003,因此不支持OnClientClick这个属性

不过,在Page_load里面可以加onclick属性

ok,暂时是解决问题了。毕竟代码不是我写的,我也不清楚前人为什么不直接把linkbutton放在div外面,可能是为了画界面吧。


给分!!!
symbol441 2007-12-05
  • 打赏
  • 举报
回复
楼主可以参考一下

<div id="myDiv" onclick="if(divClick())this.children[0].chick()">home

<asp:LinkButton ID="HomeButton" Text="snhame" Runat="server" OnClientClick="lbtClick('false')" EnableViewState="False" ></asp:LinkButton>
</div>




<script type="text/javascript">
function lbtClick(para)
{
if(para=='false')
{
myDiv.onclick="";
alert('ltb');
}

}
function divClick()
{
if(confirm('yes/no'))return true;
else return false;

}

</script>



LZ你可以直接在linkbutton当中传一个参数过去,以显用户点击的是linkbutton,那样在程序当中就只执行,linkbutton所触发的事件,而不去触发div的事件.
klan 2007-12-05
  • 打赏
  • 举报
回复
楼上的2位,具体怎么写啊?

我如何传值(就是那个标志位)到JS里面呢?

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧