我在頁面上添加了幾個ASP Text Box控件,添加了自定義驗證器。我有保存按鈕,驗證這些文本框。我剛剛添加了與文本框相同的驗證組。從按鈕上的驗證控件觸發onclientclick和客戶端驗證客戶端點擊
爲了納入addtional要求,我添加了onClientClick函數保存按鈕。但有趣的是,發現由於驗證組(驗證控件)的驗證不會觸發,而是調用onClientClick函數並調用服務器端Click事件。
JavaScript代碼
function ValidateInputs(source, args) {
var regex = /^(-{0,1}\d{1,100})$/;
if (args.Value.length < 1) {
$("span[id$='spn_error']").html('Please Enter ' + $(source).attr("errormessage"));
$("span[id$='spn_error']").show();
args.IsValid = false;
return;
}
else if (!regex.test(args.Value)) {
$("span[id$='spn_error']").html($(source).attr("errormessage") + ' allows only numbers');
$("span[id$='spn_error']").show();
args.IsValid = false;
return;
}
else {
if ($("span[id$='spn_error']").html().indexOf($(source).attr("errormessage")) >= 0)
$("span[id$='spn_error']").hide();
args.IsValid = true;
return;
}
}
function isValidTracker() {
//Dummy Code Say Confirm button
return(confirm('Are you sure');)
}
HTML代碼
<span class="errormesg" runat="server" id="spn_error" style="display: none;
font-size: 9px;"></span>
<asp:TextBox ID="txtLastMonthCount" runat="server" CssClass="inputbox" Width="75px" autocomplete="off" onkeypress="return isNumberKey(event);" ValidationGroup="g1"></asp:TextBox>
<asp:CustomValidator ID="CVLastMonthCount" runat="server" ErrorMessage="Last Months Closing Count" Text="<img src='../images/alert.gif' alt='Please Enter Last Months Closing Count' title='Please Enter Last Months Closing Count' />"
ValidationGroup="g1" ClientValidationFunction="ValidateInputs" OnServerValidate="ValidateInputs" ControlToValidate="txtLastMonthCount" ValidateEmptyText="true"></asp:CustomValidator>
<asp:Button ID="btnSave" runat="server" Text="Save" CssClass="button" ValidationGroup="g1" OnClientClick="return isValidTracker();" OnClick="btnSave_Click" />
請幫我找到保存按鈕點擊的解決火的OnClientClick和驗證控制。
當然,這是工作。能否請你解釋一下背後的原因,因爲沒有太大的變化。 – suryakiran
+1並接受解決方案。謝謝。 – suryakiran
我不確定,但猜測驗證控件附加自己的處理程序來單擊重新評估驗證組中所有驗證程序的按鈕事件。但是,由於您從內聯代碼返回布爾值,因此不涉及其他處理程序。 –