【发布时间】:2015-12-08 06:31:30
【问题描述】:
在主页面上,有一个按钮会弹出一个对话框,提示用户输入用户名和密码。当他们单击“保存”时,凭据将被验证(JS 和 SQL)并且窗口关闭,或者告诉他们他们的凭据无效。
我遇到了一些奇怪的行为,我可以无限地捣碎按钮,然后多次执行“保存”操作。
在Page_Load 上,我们将一个Javascript“事件”附加到按钮上,如下所示:
btnSave.Attributes.Add("onClick", "return ValidateUserPasswordSignPopup('" & txtUsername.ClientID & "', '" & txtPassword.ClientID & "');")
Javascript 验证:
function ValidateUserPasswordSignPopup(userTxtBox, PassTxtBox)
{
var userTextBoxctrl = document.getElementById(userTxtBox)
var PassTxtBoxctrl = document.getElementById(PassTxtBox)
if (userTextBoxctrl.value.trim() == '') {
alert("Please enter User Name.")
document.getElementById(userTxtBox).focus();
return false;
}
if (PassTxtBoxctrl.value.trim() == '')
{
alert("Please enter Password.")
document.getElementById(PassTxtBox).focus();
return false;
}
return true;
}
按钮点击:
Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSave.Click
If SaveData() Then
Response.Write("<script language = JavaScript>window.returnValue='yes';self.close();</script>")
End If
End Sub
SaveData() 只是创建一些对象,运行一个存储过程,再创建一些对象,然后创建一个DataTable,它被传递给另一个方法并保存到数据库中。没有什么太激烈的。
我尝试在 JS 方法中添加代码以禁用按钮,然后在代码端单击事件结束时重新启用它,但窗口似乎以这种方式无限挂起。
我还尝试在 JS 之间切换其状态(在每个 return / 结束之前重新启用它),然后在单击事件开始时重新禁用它并在点击事件结束,但我仍然可以通过这条路线多次点击按钮。
有人知道是什么原因造成的吗?
编辑 我最初的想法是运行 Javascript 所需的时间,尽管它是一个简短的脚本,但它允许用户在回发处理之前重新单击按钮点击事件。我完全删除了在上面的第一个代码块中添加到Page_Load 中的脚本,但行为仍然发生。
【问题讨论】:
标签: javascript asp.net vb.net