緊急事件:我的驗證控制項失效了,如下:
Code
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"
Display="None" ControlToValidate="TextBox1"></asp:RequiredFieldValidator><ajaxToolkit:ValidatorCalloutExtender
runat="server" TargetControlID="RequiredFieldValidator1">
</ajaxToolkit:ValidatorCalloutExtender>
<asp:Button ID="Button1" runat="server" Text="Button"/>
</div>
</form>
</body>
點擊Button會引發驗證控制項對TextBox的驗證,當TextBox為空白時,不能提交頁面,沒有任何的問題。但我做如下修改,將Button的Enable屬性置為false,然後在觸發某一事件後,Button的Enable屬性為true,這時驗證控制項就會失去作用,代碼如下:
Code
<script language="javascript" type="text/javascript">
function pageLoad()
{
$get("TextBox2").onchange=textboxOnchange;
}
function textboxOnchange()
{
$get("Button1").disabled="";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"
Display="None" ControlToValidate="TextBox1"></asp:RequiredFieldValidator><ajaxToolkit:ValidatorCalloutExtender
runat="server" TargetControlID="RequiredFieldValidator1">
</ajaxToolkit:ValidatorCalloutExtender>
<asp:Button ID="Button1" runat="server" Text="Button" Enabled="false" />
</div>
</form>
</body>
這是為什麼呢?我分析了這兩種情況Button在客戶對產生的程式碼:
第一種情況:<input type="submit" name="Button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" />
第二種情況: <input type="submit" name="Button1" value="Button" id="Button1" disabled="disabled" />
第二種情況真的沒有產生驗證代碼,我發現只要在伺服器端規定Button的Enable屬性,驗證控制項就會失效,在用戶端就規定就不會存在這個問題。
能否解決這個問題,是驗證控制項一直起作用,望各位高手指導,我這裡先謝謝了。