2011-12-27 15 views
4

我面臨一個問題,在我的asp.net web應用程序,我需要顯示一個java腳本確認框上點擊更新按鈕,這是根據要求給我。如何在驗證asp.net中的表單數據之後獲取javascript確認框?

目前我使用onclient點擊

<asp:Button ID="btnCustomerUpdate" runat="server" CssClass="applybuttonstyle" 
      Text="Update" onclick="btnCustomerUpdate_Click" 
      OnClientClick="return confirm('Do you really want to update?');"/> 

它工作正常,但問題是我還應用在我的表單字段一些驗證控件,所以如果用戶留下任何字段爲空,然後點擊更新按鈕,然後它顯示的javascript確認框和該表單字段下的驗證消息。

它不是所希望的行爲,除非所有驗證都通過,否則不應顯示確認框。

我希望這是因爲我在客戶端使用這個點擊所以請告訴我一個更好的解決方案。

在此先感謝。

回答

9

您可以在您自己的確認功能中使用Page_ClientValidate來決定是否顯示確認對話框。 喜歡的東西:

function validateAndConfirm(message){ 
    var validated = Page_ClientValidate('group1'); 
    if (validated){ 
     return confirm(message); 
    } 
} 

並在服務器上,你會碰到這樣的:

<asp:textbox id="TextBox1" runat="server"/> 
     <asp:requiredfieldvalidator ValidationGroup="group1" 
                ErrorText="Need to Fill in Value!" 
                ControlToValidate="TextBox1" 
                runat="server"/> 

    <asp:textbox id="TextBox2" runat="server"/> 
     <asp:requiredfieldvalidator ValidationGroup="group1" 
                ErrorText="Need to Fill in Value!" 
                ControlToValidate="TextBox2" 
                runat="server"/> 

而且按鈕代碼將變爲:

<asp:Button ID="btnCustomerUpdate" runat="server" CssClass="applybuttonstyle" 
     Text="Update" onclick="btnCustomerUpdate_Click" ValidationGroup="group1" 
     OnClientClick="return validateAndConfirm('Do you really want to update?');"/> 

很顯然,我不能對此進行測試,但你明白了。

如果您將使用Page_ClientValidate您可能會發現this SO question有用。

+0

感謝您的回答,我會嘗試impletment它很快就那麼它是否會工作,然後我將標誌着你接受: - ) – Peeyush

0

您應該至少在客戶端應用驗證,並打開確認對話框, 而在服務器上,如果用戶禁用了JavaScript,則必須首先使用服務器端驗證,並更新記錄。

您也可以使用AJAX更新記錄,因此如果出現驗證消息,則顯示錯誤消息,如果驗證通過,則可以提醒用戶,但使用該唯一缺點是您必須重新發布數據再次。爲了緩解這個問題,你必須保存在臨時表中,直到用戶給出確認並從臨時表中刪除它,但顯​​然這需要很多工作。

1

可以調用Page_ClientValidate方法,以確保頁面符合要求用戶面前:

if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false) { 
    return false; 
} else { 
    return confirm('Do you really want to update?'); 
} 
相關問題