2015-09-11 45 views
0

在主頁面上,有一個按鈕彈出一個對話框,提示用戶輸入用戶名和密碼。當他們點擊「保存」時,證書會被驗證(兩個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中添加的腳本,在上面的第一個代碼塊中,但行爲仍然發生。

回答

1

用戶能夠多次點擊按鈕由於表單提交之間的滯後到服務器並響應內容來自該服務器的。

return true;ValidateUserPasswordSignPopup之前禁用或隱藏按鈕。

另一種方式:

var submittedFlag = false; 
function ValidateUserPasswordSignPopup(userTxtBox, PassTxtBox) 
{ 
    if (submittedFlag) 
    return false; 

    ... 

    submittedFlag = true; 
    return true; 
} 
+0

正如我的最後一段所述,在編輯之前,我嘗試在JavaScript中和代碼中切換啓用狀態。我也嘗試完全刪除Javascript。這兩個問題都沒有解決。這就是說,你的第二個想法是用'submittedFlag' *做了*工作。 – sab669

0

而不是使用Response.Write,嘗試使用ClientScriptManager.RegisterClientScriptBlock方法註冊JavaScript。

Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 

    If SaveData() Then 

     Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "YourKey", _ 
                "<script language = JavaScript>window.returnValue='yes';self.close();</script>") 

    End If 

End Sub 
+0

不幸的是這似乎不有所作爲。 – sab669

+0

我很遺憾聽到這個消息。這在我測試時適用於我。嘗試使用瀏覽器的開發工具來查看它是否表示出現問題。也許我們錯過了一些東西。 – N0Alias

相關問題