クライアント側の検証スクリプトを呼び出す CustomValidation コントロールを備えた ASP.NET TextBox があります。
<asp:TextBox ID="txtSubsContrRbtAmt" runat="server"
CssClass="textEntry NumericInput" Width="150px"
Text="" onKeyUp="SumValues();" MaxLength="16"></asp:TextBox>
<asp:CustomValidator ID="cvalSubsContrRbtAmt" runat="server" ClientValidationFunction="ValidatetxtSubsContrRbtAmt"
ControlToValidate="txtSubsContrRbtAmt" CssClass="errlable" ErrorMessage="Max Decimals = 7"
SetFocusOnError="True" ValidationGroup="CarbsAdd"></asp:CustomValidator>
クライアントスクリプトは次のとおりです。
function ValidatetxtSubsContrRbtAmt(source, args) {
var txtSubsContrRbtAmt = document.getElementById("<%=txtSubsContrRbtAmt.ClientID%>");
var amount = txtSubsContrRbtAmt.value;
args.IsValid = ValidAmount(amount);
if (!args.IsValid)
txtSubsContrRbtAmt.focus();
}
function ValidAmount(amount) {
if (isNumber(amount)) {
return (RoundToXDecimalPlaces(amount, 7) == amount);
}
else {
return true;
}
ValidatetxtSubsContrRbtAmt 関数では、"source" パラメーターは CustomValidator です。そのコントロールにはプロパティ「ControlToValidate」があります。取得できれば、そのコントロールからプログラムで値を取得でき、各テキスト ボックスを検証するための別の関数を用意する必要はありません。
この時点で jQuery は多すぎるので、単純な古い Javascript のアプローチを探しています。