2011-06-23 57 views
0

我在我的aspx頁面的鏈接按鈕上導致驗證問題。我擁有的是帶有兩個文本框,一些驗證控件和一個提交按鈕的頁面。驗證控件已將客戶端腳本設置爲true,並具有驗證組。我的asp圖像按鈕有一個驗證組分配,並導致驗證等於true。我的重點放在了我的第一個文本框中。ASP.NET CasusesValidation =「false」對IE中的鏈接按鈕不起作用

我的鏈接按鈕是一個點擊這裏瞭解更多關於.....我已經指定了驗證組,並將驗證設置爲false。在Chrome中,一切正常。在IE中,當單擊除提交按鈕之外的頁面上的任何位置,或者單擊我的鏈接按鈕時,我的第一個文本框將被驗證並顯示錯誤。現在,如果我再次點擊鏈接按鈕,我會重定向到我期望的頁面。

這對我來說似乎有點不可思議,任何人都有什麼想法?

那麼,我該如何解決這個問題,所以只有點擊提交按鈕後,IE纔會驗證。

這裏是我的代碼如下所示:

<span>Value 1:</span> 
<asp:TextBox ID="Value1TextBox" runat="server" /> 
<asp:RequiredFieldValidator ID="Value1_1_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" /> 
<asp:RegularExpressionValidator ID="Value1_2_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" ValidationExpression="\somevalexpression\" Display="Dynamic" ForeColor="Red" Text="is not valid" ValidationGroup="MyValGroup" runat="server" /> 
... 
<span>Value 2:</span> 
<asp:TextBox ID="Value2TextBox" runat="server" /> 
<asp:RequiredFieldValidator ID="Value2_1_Validator" EnableClientScript="true" ControlToValidate="Value2TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" /> 
... 
... 
<asp:ImageButton ID="SubmitButton" ImageUrl="~/Images/submit.png" OnClick="SubmitButton_Click" ValidationGroup="MyValGroup" CausesValidation="true" runat="server" /> 
... 
<asp:LinkButton ID="OurPolicyLink" PostBackUrl="~/Policy.aspx" ValidationGroup="MyValGroup" CausesValidation="false" Text="click here" runat="server" /> 

我想出了使用jQuery和javascript修復,它不乾淨,但它確實工作。我會認爲只是做導致驗證等於假的就足夠了。也許我錯了。

我有一個腳本的JavaScript文件,這裏是什麼樣子。

$(function() { 

    $"[id$=_Value1TextBox]").focus(); 

    $("[id$=_Validator]").each(function() { 
     $(this)[0].enabled = false; 
    }); 

    $("[id$=_SubmitButton]").click(function() { 

     $("[id$=_Validator]").each(function() { 
      $(this)[0].enabled = true; 
     }); 

     Page_ClientValidate("MyValGroup"); 

     if (!Page_IsValid) { 
      return false; 
     } 

     return true; 

    }); 

}); 

回答

1

這是因爲您將焦點設置在文本框上。當焦點離開文本框時,它正在觸發驗證。要麼不把焦點設置在文本框上,要麼在TextBox上設置CuasesValidation = False。後一個選項的問題在於,直到相同驗證組中的其他內容觸發驗證,纔會驗證文本框。